2016-12-26 8 views
0

私はセルD3に次の数式を持つブックを持っています。可変シート名を持つVba Vlookup

"= VLOOKUP($ C3、 '[NIGHT ROTA.xlsx] ' A $ 5 $:$ I $ 32 D $ 1,0)"

ソースブックが52枚を有し、iは特定のシートを検索したいのですが、手動でシート名を変更し、ワークシートの変更を使用してブック内のセルにコピーするには、以下のコードを実行する必要があります。

シート名を変数として使用する方法はありますか?ワークブックのセルにドロップダウンリストから選択する方法がありますか?間違って使用することはできますが、ソースブックを開く必要はありません。

Sub WeekChange() 
Range("D3").Select 
Selection.Copy 
Range("D3:I26").Select 
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ 
    SkipBlanks:=False, Transpose:=False 
Application.CutCopyMode = False 
Range("A1").Select 
End Sub 

答えて

1

あなたは、ドロップダウンセルにシート名を入れE1(またはお好みのいずれかを)言うと、このセルの変化を捉えることができます。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = Range("E1").Address Then 
     Range("D3:I26").Formula = "=VLOOKUP($C3,'[NIGHT ROTA.xlsx]" & Target.Value & "'!$A$5:$I$32,D$1,0)" 
    End If 
End Sub 

ドロップダウンを移入するにはボックスのE1で、あなたは最終的には、ブックの開封時にそれを設定することができます(あなたは何らかの理由があると思います)を開こうとしないので、E1の検証を手動で設定する必要があります。

+0

私はこれを試して、ランタイムエラー5を得ました – Sherbetdab

+0

@Sherbetdab申し訳ありませんが、誤字がありました。編集したコードを試してください。 –

+0

これは治療法です。私の数式は別のワークブックにあるので、Indirect vlookupを使用した場合、他のワークブックを開くことを望まない理由は、あなたの方法がずっと速いです。ありがとうございました。 – Sherbetdab