В зависимости от контекста у вас есть несколько вариантов.
1. Используйте константу
Вы можете объявить константу в верхней части вашего кода, тогда вам нужно всего лишь изменить константу, чтобы она влияла на каждую точку, где используется константа. Вместо того, чтобы использовать:
Set shtSheet = sheets("Sheet1")
Вы можете использовать:
Set shtSheet = Sheets(csSource)
на протяжении.
Объявите константу, используя Const <name> as <type> = <value>
Sub WorksheetVar()
Const csSheetName As String = "Test"
Sheets(csSheetName).Range("A1").Value = 1
Sheets(csSheetName).Range("A2").Value = 2
Sheets(csSheetName).Range("A3").Value = 3
End Sub
Он не избавляется от необходимости устанавливать значение в коде, но позволяет легче обновлять его, а не искать код для всех мест, где используется имя.
2. Используйте номера индекса
Каждый лист имеет номер, а также имя, обычно положение листа во вкладках. Это останется прежним, даже если имя листа будет изменено, но оно изменится, если изменится порядок вкладок.
3. Используйте переменную
Вы можете получить переменную из ячейки, другого макроса, поля ввода и т.д. Вы можете использовать это, чтобы передать имя таблицы в ваш код.
4. Используйте имя объекта листа
Независимо от отображаемого имени листа каждый лист имеет имя объекта, обычно это имя, которое он имел при первом создании. Если вы посмотрите на проводник проектов слева, то увидите, что каждый лист указан как «Лист1 (Лист1)». Если вы изменили имя Sheet1 на Test, вы увидите Sheet1 (Test)
. Вы можете использовать это неизменное имя объекта для ссылки на лист по мере необходимости, как если бы это была переменная.
Sub Sheetname()
Sheet1.Range("A1").Value = 1
Sheet1.Range("A2").Value = 2
End Sub
Лично мне не нравится этот метод, так как легко запутаться, какой лист какой, но это, безусловно, вариант для вас.