Como dar planilhas do Excel para duplicar nomes / legendas?

2

Existe uma maneira de dar uma planilha do Excel uma legenda / título / rótulo diferente de seu nome? (Via automação OLE, se isso for relevante.)

O motivo é que posso ter nomes que diferem apenas no caso, por isso não posso usá-los como Worksheet.Name. Mas eu não preciso me referir a eles do VBA, só quero que o usuário os veja.

Edit: Eu quero mudar essas strings:

music2myear tem uma explicação melhor do meu problema:

Excel enforces a no-duplication policy on the given name, and the given name is the visible name.

Minha pergunta é / was: Posso ter um nome visível diferente do nome fornecido?

    
por Ulrich Gerhardt 29.08.2013 / 16:28

3 respostas

1

Você não pode definir o título / rótulo visível em uma guia da planilha para ser diferente do título / rótulo real. O Excel impõe uma política de não duplicação no nome fornecido e o nome fornecido é o nome visível.

No entanto, no VBA, você não precisa necessariamente se referir à planilha usando seu nome próprio.

De link nós aprendemos que podemos referenciar as planilhas pelo seu índice (dependendo da ordem das planilhas) ou pela propriedade do seu nome de código.

Índice:

Index values come in handy when you don't care about specific sheets, but only their number or order. Granted, that's not going to be a common task, but occasionally, referencing by index values can come in handy. The following procedure adds and deletes sheets based on the number of sheets you want:

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

Propriedade do nome do código:

Code that refers to a Worksheet object by the name on the sheet's tab runs the risk of generating an error. That's because you must remember to update the code when you change the sheet's name. Not only is that a lot of trouble, users are apt to change a sheet's name. One way to safeguard code that refers to specific sheets by name is to use the CodeName property. The code name is the sheet's default name , which Excel assigns when you create it -- Sheet1, Sheet2, and so on. Changing the sheet's name, as displayed on the sheet's tab, does not change its code name, as you can see in Figure D. The names in parentheses are the sheet names (as shown on the sheet tabs). Notice that the default names, the code names, remain the same even if you change the sheet's name.

    
por 29.08.2013 / 17:38
1

Você pode colocar um espaço no final do nome da planilha para separá-lo. Assim, "Sheet1" terá a mesma aparência de "SHEET 1" para o usuário.

    
por 29.08.2013 / 17:50
1

Infelizmente, a resposta é não. Você não pode ter duas planilhas com os mesmos nomes.

PossosugerirumasoluçãoalternativausandooVBA

SubAutomateSpreadSheetName()Dimname1AsStringname1="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

Você define o nome na variável name1 . Se o nome existir na coleção de planilhas, a planilha atual será renomeada com um dígito aleatório de 0 a 9

    
por 29.08.2013 / 17:47