[[20071119111820]] 『シート名を変数にしてVLOOKUPを実行したい』(ミカン) ページの最後に飛ぶ

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

 

『シート名を変数にして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様、純丸様、ありがとうございます!
お二人の方法、どちらでも出来ました。
INDEXについて理解してなかったので、もう少し勉強してきます…。
本当にありがとうございました!

 >> 【集計中】というシートがあり、その前に位置するシートが毎回変わるため...
 >とあったので...
 
 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.