Я работаю над кодом для ссылки на лист Excel по переменной, однако я застрял на последнем шаге, который выбирает лист в соответствии с текстом переменной, который является аббревиатурой месяца.
Это был единственный способ выбрать нужный лист на основе индекса месяца, любую другую помощь можно было бы приветствовать.
Dim DestWS1 As Worksheet
Dim InputValue As Integer
InputValue = InputBox("Please enter your month index number", "Selecting month index to generate your report")
' Print the name of the airport to the Immediate Window(Ctrl + G)
Dim MonthIndexResult As String
MonthIndexResult = _
"=LOOKUP(" & InputValue & ",InputData!R3C17:R14C17,InputData!R3C16:R14C16)"
Set DestWS1 = ThisWorkbook.Sheets(" & MonthIndexResult & ")
DestWS1.Select
это был единственный способ, которым я мог перейти к выбору нужного листа на основе индекса месяца, любая другая помощь могла бы приветствоваться
MonthIndexResult = Format(DateSerial(Year(Date), Inputvalue, 1), "mmm")
Похоже, вы хотите оценить формулу в своем коде и прочитать ее вывод в переменную, а затем использовать эту переменную в качестве имени листа? Если да, то попробуйте следующее:
Dim DestWS1 As Worksheet
Dim InputValue As Integer
InputValue = InputBox("Please enter your month index number", "Selecting month index to generate your report")
' Print the name of the airport to the Immediate Window(Ctrl + G)
Dim MonthIndexResult As String
' MonthIndexResult = _
' "=LOOKUP(" & InputValue & ",InputData!R3C17:R14C17,InputData!R3C16:R14C16)"
MonthIndexResult = Application.Evaluate("=LOOKUP(" & InputValue & ",InputData!R3C17:R14C17,InputData!R3C16:R14C16)")
Set DestWS1 = ThisWorkbook.Sheets(MonthIndexResult)
DestWS1.Select
Подробнее об этом методе можно узнать здесь: Метод Application.Evaluate (Excel)
К сожалению, это не сработало со мной
Sub SelectByMonth()
Dim InputString As String
InputString = InputBox("Please enter your month index number", _
"Selecting month index to generate your report")
If Len(InputString) = 0 Then Exit Sub ' no input
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = wb.Sheets("InputData")
Dim slrg As Range: Set slrg = sws.Range("Q3:Q14")
Dim srrg As Range: Set srrg = sws.Range("P3:P14")
Dim srIndex As Variant
srIndex = Application.Match(CLng(InputString), slrg, 0)
If IsError(srIndex) Then Exit Sub ' month (number) not found
Dim sMonth As String: sMonth = srrg.Cells(srIndex)
Dim dws As Worksheet
For Each dws In wb.Worksheets
If InStr(1, dws.Name, sMonth, vbTextCompare) > 0 Then Exit For
Next dws
If dws Is Nothing Then Exit Sub ' worksheet not foundd
If Not wb Is ActiveWorkbook Then wb.Activate
dws.Select
End Sub
Рассматривали ли вы функцию косвенного() - строит рабочую ссылку из текста и ссылки на ячейку. Много примеров здесь.