VBA Vlookup可变图纸名称

我有一个工作簿,我在单元格D3中具有以下公式。

“= VLOOKUP($ C3,'[NIGHT ROTA.xlsx] 15 '!$ A $ 5:$ I $ 32,D $ 1,0)”

源工作簿有52张,当我想要search某个工作表时,我必须手动更改工作表名称,然后运行下面的代码,使用工作表更改将其复制到工作簿中的单元格中。

有没有办法将sheetname作为一个variables,我将在工作簿中的单元格中,或将从下拉列表中select? 我知道我可以使用INDIRECT,但不想打开源工作簿。

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 

你可以把表格名称放在一个下拉单元格中,比如E1 (或者你select的任何一个),并捕获这个单元格中的变化:

 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的validation。