2

Есть ли способ дать листу Excel заголовок / заголовок / ярлык, отличный от его названия? (Через OLE-автоматизацию, если это актуально.)

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

Изменить: я хочу изменить эти строки:Скриншот

У music2myear есть лучшее объяснение моей проблемы:

Excel применяет политику отсутствия дублирования для данного имени, и данное имя является видимым именем.

У меня вопрос / был: Могу ли я иметь видимое имя, отличное от данного имени?

3 ответа3

1

Нельзя установить видимый заголовок / ярлык на вкладке листа, чтобы он отличался от фактического заголовка / ярлыка. Excel применяет политику отсутствия дублирования для данного имени, и данное имя является видимым именем.

Однако в VBA необязательно обращаться к рабочему листу с использованием его имени.

Из http://www.techrepublic.com/blog/10-things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/ мы узнаем, что мы можем ссылаться на листы по их индексу (в зависимости от порядка листов) или по их кодовому названию.

Индекс:

Значения индекса пригодятся, когда вам нужны не конкретные листы, а только их количество или порядок. Конечно, это не будет обычной задачей, но иногда ссылки на значения индекса могут оказаться полезными. Следующая процедура добавляет и удаляет листы в зависимости от количества листов, которое вы хотите:

Function ControlSheetNumber(intSheets As Integer)

  'Add or delete sheets to equal intSheets.

  Application.DisplayAlerts = False

  'Delete sheets if necessary

  While Worksheets.Count > intSheets

    Worksheets(1).Delete

  Wend

  'Add sheets if necessary

  While Worksheets.Count < intSheets

    Worksheets.Add

  Wend

  Application.DisplayAlerts = True

End Function

Кодовое имя Свойство:

Код, который ссылается на объект Worksheet по имени на вкладке листа, рискует вызвать ошибку. Это потому, что вы должны помнить об обновлении кода при изменении имени листа. Мало того, что много проблем, пользователи могут изменить имя листа. Одним из способов защиты кода, который ссылается на конкретные листы по имени, является использование свойства CodeName. Кодовое имя - это имя листа по умолчанию, которое Excel назначает при его создании - Sheet1, Sheet2 и т.д. Изменение имени листа, как показано на вкладке листа, не меняет его кодовое имя, как вы можете видеть на рисунке D. Имена в скобках - это имена листов (как показано на вкладках листов). Обратите внимание, что имена по умолчанию, имена кодов, остаются прежними, даже если вы измените имя листа.

1

К сожалению, ответ - нет. Вы не можете иметь две таблицы с одинаковыми именами.


Я могу предложить обходной путь, используя VBA

Sub AutomateSpreadSheetName()
    Dim name1 As String
    name1 = "Sheet1" 'note Sheet1 already exists
    RenameIfExist name1
End Sub

Private Sub RenameIfExist(name1)
    Dim ws As Worksheet
    For Each ws In Sheets
        If ws.Name = name1 Then
            ws.Name = name1 & Chr(32) & Int(Rnd() * 10)
            RenameIfExist name1
            Exit Sub
        End If
    Next
End Sub

Вы устанавливаете имя в переменной name1 . Если имя существует в Коллекции рабочих листов, то текущий лист будет переименован со случайной цифрой от 0 до 9

1

Вы можете поставить пробел в конце имени листа, чтобы выделить его. Таким образом, "Лист1" будет выглядеть так же, как и "Лист 1" для пользователя.

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