🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

1311閲覧

VBAで条件付きで数式を値に変換したい です

surin

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/01/13 10:37

値が"空白"か、値が"図"であるなら変換しないという条件で構文を作成したいです。

ご教授お願いします

Range("A1:H15").Value = Range("A1:15").Value

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/01/13 10:50

> 値が"空白"か、値が"図"であるなら変換しないという条件で構文を作成したいです。 と > Range("A1:H15").Value = Range("A1:15").Value はどういう関係でしょうか?
surin

2021/01/13 11:03 編集

> Range("A1:H15").Value = Range("A1:15").Value は気にしなくても結構です これを必ずしも使わなくても、目的が達成さえされればよいです。 これを載せた理由は、「数式を値にする」ということを強調する意味合いで載せたのですが、混乱させてしまったのであればすいませんでした。
meg_

2021/01/13 11:18

>> Range("A1:H15").Value = Range("A1:15").Value > は気にしなくても結構です とのことですが、このコードを実行してみたところエラーが出ます。 やりたいことがいまいち分からないので、具体例を挙げた方が回答者が回答しやすいかと思います。
surin

2021/01/13 12:06 編集

ご指摘の追記ありがとうございます。 VBA初心者なのものでして、どのように伝えれば伝わるかということが逆にわからないのでお手数なのですが、   "VBAで条件付きで数式を値に変換したい です 値が"空白"か、値が"図"であるなら変換しないという条件で構文を作成したいです。"  上記の文章で何がわからないか具体的に挙げて指摘していただくと助かります。
surin

2021/01/13 12:03 編集

一応具体例について話します 記入用シートに記入すると、他のシートに同期されるようになっているのですが、未記入ですと空白の状態なのですが、そこで「数式」を値にしてしまうと、肝心な「数式」が消えてしまうということと、「図」と書かれている部分はハイパーリンクになっているので、その数式が消えてしまうので、それを克服したいという趣旨です。
surin

2021/01/13 13:42 編集

Range("A1:H15").Value = Range("A1:15").Value  すいません、これはHが抜けていました。正しくは、 Range("A1:H15").Value = Range("A1:H15").Value です。
hatena19

2021/01/13 12:38

「記入用シートに記入すると、他のシートに同期されるようになっているのですが、」は具体的にどのようにしているのか回答に追記してください。セルに数式が設定されているのなら、その式を提示してください。 また、現状のVBAコードも提示してください。
surin

2021/01/13 13:25 編集

A8〜Z5000まで、同期させる関数をいれているんですが、Bの列とLの列のみハイパーリンク関数をつかっていて、その数式を消したくないのと、空欄には「IFERROR」関数が入っているため、これも消したくないのです。 式は「IFERROR(LEFT(Sheet1!B63,FIND("",Sheet1!B63)-1),"")」です。 ハイパーリンクの数式も必要ですか? ちなみに現状のVBAコードなんですけどRange("A1:H15").Value = Range("A1:H15").Valueです。 大変お手数なんですが、なぜ「同期されているシートの内容を消したくない」という理由だけでは不十分なのかわからないので、そこも、よろしければお教えいただけると今後お役に立ちますのでご協力いただけるならよろしくお願いします >「記入用シートに記入すると、他のシートに同期されるようになっているのですが、」は具体的にどのようにしているのか回答に追記してください。セルに数式が設定されているのなら、その式を提示してください。 また、現状のVBAコードも提示してください。
guest

回答2

0

ベストアンサー

A8〜Z5000まで、同期させる関数をいれているんですが、Bの列とLの列のみハイパーリンク関数をつかっていて、

下記でどうでしょうか。

vba

1 Dim c As Range 2 3 For Each c In Range("A1:H15").Cells 4 If c <> "" And c.Column <> 2 And c.Column <> 12 Then 5 c.Value = c.Value 6 End If 7 Next

投稿2021/01/13 17:49

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ありがとうございました

投稿2021/01/28 04:00

surin

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問