[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ構文にVLOOKUP関数を入れたら#NAME?となる』(YY81)
超初心者で最近マクロに挑戦し始めました。
マクロで
Dim i As Integer
Range("A1").Select
For i = 1 To 165
If i Mod 30 = 0 Then
ActiveCell.Value = i
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!A:B,2,FALSE)"
With ActiveCell.Offset(-29, 1).Select
End With
Else
ActiveCell.Value = i
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!A:B,2,FALSE)"
With ActiveCell.Offset(1, -1).Select
End With
End If
Next
End Sub
と入力すると関数の部分は#NAME?です。
しかしマクロ実行した後関数のセルをダブルクリックするとちゃんと値が表示されます。
できかけているので悔しいです。
構文に何か足さなければならないのでしょうか。
数式部分を書き換えたからじゃないでしょうか。
FormulaR1C1 ・・・・ 「R1C1形式で書くよ」って言っているのに 数式内では Sheet1!A:B と書いてあるので。
例えば、B1セルに「=VLOOKUP(A1,Sheet1!$A:$B,2,FALSE)」の数式を入れるのを マクロの記録にとると ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!C1:C2,2,FALSE)" と成りますが。
(HANA)
ちなみに、「If i Mod 30 = 0 Then 」の時の処理で違うのは 数式等を入れた後、どのセルを選択するか の部分だけの様なので その部分だけを個別処理にすると、すこしすっきりすると思います。
'------ Sub 違う所だけ() Dim i As Integer Range("A1").Select For i = 1 To 165 ActiveCell.Value = i ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!C1:C2,2,FALSE)"
If i Mod 30 = 0 Then ActiveCell.Offset(-29, 1).Select Else ActiveCell.Offset(1, -1).Select End If Next End Sub '------
With 〜 End With の所は、少しおかしいと思います。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.