[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「=IFERROR(」で始まる数式をマクロで打ち込みたい。』(り)
『=IFERROR(VLOOKUP〜』の関数をマクロを使ってとあるセルに書き込みたいです。
【環境】
Macbook Pro 2013 MacOS Mojave 10.14.6
Excel for Mac 16.51
【コード】
Dim i As Long Dim str1 As String, str2 As String str1 = "=IFERROR(VLOOKUP(C" str2 = ",sheet!$B$5:$D$1733,3,FALSE),"")" For i = 16 To 45 Cells(i, 8) = str1 & i & str2 Next i
【症状】
Cells(i,8)〜の行でエラー1004を吐く (iの値は16止まり)
str1の「=」を外したら問題なく動く
ワークシートを複数人で共有している為、他者が書き込んだ値をリセットするために
元々打ち込んであったIFERROR関数をマクロで打ち直したいのです。
「=」をただの文字列として認識させるためにはどうすべきでしょうか?
< 使用 Excel:Office365、使用 OS:MacOSX >
(ひまつぶし) 2021/11/22(月) 11:40
>「=」をただの文字列として認識させるためにはどうすべきでしょうか?
意味がよくわからないけど、 頭に'を追加してやればいいだけ。 (にくちゃんねる) 2021/11/22(月) 11:43
>str1の「=」を外したら問題なく動く
数式ではなく、単なる文字列とみなされます。
エラーにはなりませんが、
正しい数式に見合う文字列が書き込まれたわけではありません。
すでに指摘があるように、文字列のなかでダブルクォーテーションそのものを使うときは
注意が必要です。
""と二つ続けてはじめてひとつの" とされます。
str2 = ",sheet!$B$5:$D$1733,3,FALSE),"")"
を
str2 = ",sheet!$B$5:$D$1733,3,FALSE),"""")"
とする必要があります。
なお、繰り返しを使ってもいいですが、
Sub test2()
Range("H16:H45").Formula _
= "=IFERROR(VLOOKUP(C16,sheet2!$B$5:$D$1733,3,FALSE),"""")"
End Sub
でもよいと思います。(シート名を変えています。またアクティブシートに書き込む前提です)
(γ) 2021/11/22(月) 12:08
tkitさん、γさん
Formulaプロパティ初耳でした、勉強になります!
今回は16行目から45行目まで書き込むということと、
書き込むセルの行数とVLOOKUPの参照先行数が比例していてほしかったため
繰り返しを使ってみました。
γさんからご提案いただいたコードでもFormulaプロパティであればちゃんと比例してくれるということですね。
(り) 2021/11/22(月) 12:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.