[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート名を変数にしてVLOOKUPを実行したい』(ミカン)
いつも色々調べるのに使用させて頂いています。
VBA上でVLOOKUPを使用する際に、シート名に変数を使用したいのですがエラーが発生します。
【集計中】というシートがあり、その前に位置するシートが毎回変わるためシート名を変数で取得したいと思い、以下のコードを記入してみたのですがエラーが発生しました。
Option Explicit '変数宣言の強制
Dim SName2 As String
SName2 = ActiveSheet.Previous.Name
Worksheets("【集計中】").Activate
Range("C4").Formula = "=VLOOKUP(A4,SName2!$D:$O,3,0)"
どうすれば変数でVLOOKUPをかけられるのでしょう??
お手数ですが教えて頂けると助かります。
こういうこと? With Sheets("【集計中】") .Range("C4").Formula = "=VLOOKUP(A4," & Sheets(.Index - 1).Name & "!$D:$O,3,0)" End With (ROUGE)
衝突☆!
Range("C4").Formula = の右側は、"" で囲われているから「文字列」です。 SName2 という変数を使って文字列を作るのですから、
Range("C4").Formula = "=VLOOKUP(A4," & SName2 & "!$D:$O,3,0)"
こんなことになるかと思います。
ROUGEさん、【集計中】シートのひとつ前のシート名とは 書いてないけど、、。もしそうなら、Activate が前に来ないと変??
Previousについてはよくわからないけど Index を使うのが普通かな。 (純丸)(o^-')b ※。
> 【集計中】というシートがあり、その前に位置するシートが毎回変わるため... とあったので... (ROUGE)
>> 【集計中】というシートがあり、その前に位置するシートが毎回変わるため... >とあったので... ROUGEさん、ごめんなさいm(__)m 文章の方をよく読んでなかった。 でも、それなら、Worksheets("【集計中】").Activate をしてから、 前のシート名の取得をすべきでしょう。 (純丸)(o^-')b
Previous はオブジェクトに対して使えそうですね。 したがって、Sheets(.Index - 1).Name は .Previous.Name とも書けます。
Rangeの場合、左上端のセル番地のひとつ左のセルが取得される様子。 したがって、A列が含まれるとエラーになるようです。 (ROUGE)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.