После запуска макроса и создания данных на этом листе оригинала, я предлагаю пользователю назвать этот лист оригинала, используя приведенный ниже код.

oriSheet = InputBox("Please Name the Sheet?", vbOKCancel)
If oriSheet = False Or oriSheet = "" Then
MsgBox "Invalid Name"
Exit Sub
Else
ActiveSheet.Name = oriSheet
End If
oriSheet = ""

Затем я запускаю другую подпрограмму, чтобы прямо сейчас взять oriSheet для фильтрации.
Можно ли ссылаться на этот лист с помощью переменной?
Потому что я, кажется, не получаю там с ошибкой "индекс вне диапазона" в коде ниже.

Set sht = ThisWorkbook.Worksheets("oriSheet")
Set newsht = ThisWorkbook.Worksheets("sheet2")

Я забрал двойные кавычки, думая из-за них, oriSheet не интерпретируется, как другие языки программирования. Но это все еще не работает.

Я подумал, что это может быть легко, но я потратил на это часы.
Я пошел в Google, там говорится: «Существует два способа ссылаться на лист, по индексу (но Idk индекс) и по имени (но Idk имя тоже?)"

1 ответ1

1

Измените свой первый макрос, чтобы сохранить oriSheet в другой переменной в конце;

Public oriSheetRecorder As String
oriSheet = InputBox("Please Name the Sheet?", vbOKCancel)
If oriSheet = False Or oriSheet = "" Then
MsgBox "Invalid Name"
Exit Sub
Else
ActiveSheet.Name = oriSheet
On Error Goto Errorhandler
oriSheetRecorder = oriSheet
oriSheet = ""
End If

Errorhandler:
MsgBox "Name of the active sheet is " , ActiveSheet.Name, "It is Invalid Name or an error has happened"
Exit Sub

Тогда в вашем втором Sub есть это:

Set sht = ThisWorkbook.Worksheets(oriSheetRecorder)
Set newsht = ThisWorkbook.Worksheets("sheet2")

Причина, по которой ваш код сейчас не работает, заключается в том, что вы очищаете oriSheet в этой строке: oriSheet = "" поэтому позже вы не сможете обратиться к нему. Кроме того, вам не нужно (не нужно) ставить " вокруг переменной. double-quote в Excel предназначена для различения текстов, команд и переменных. oriSheet - это переменная, которая по определению является строкой, поэтому она никогда не нуждается " в ней. быть идентифицированным как текст.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .