[[20100423145742]] 『マクロ構文にVLOOKUP関数を入れたら#NAME?となる』(YY81) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ構文に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.