Ottenere un nome di foglio di lavoro con Excel VBA

Vorrei creare un user-defined funzione in Excel in grado di restituire il foglio di lavoro corrente. Ho potuto utilizzare il

sheetname = ActiveSheet.Name

Ma il problema con questo è, funziona e improvvisamente inizia a ottenere un foglio diverso nome. Per esempio, invece di SHEET I LOVE YOU restituisce SHEET I HATE YOU.

Esiste un modo per risolvere questo – o è possibile, perché penso che non può essere statica, ma cambia?

InformationsquelleAutor user2103670 | 2013-10-11



5 Replies
  1. 30
    Function MySheet()
    
       MySheet = Application.Caller.Worksheet.Name
    
    End Function

    Questa dovrebbe essere la funzione che stai cercando

    • Grazie mille, funziona alla grande – molto apprezzato – mi aiuta molto quando si fa l’vlookup
    • e ‘ stata una buona scusa per me per imparare un nuovo trucco con VBA 🙂
    • Deve essere Volatile
    • Grazie, trovo strano con VBA che non hanno ThisWorksheet.Nome come fanno con la Cartella di lavoro.Nome
    • Perché ricevo l’errore “424” “Oggetto richiesto” quando provo a chiamare questa funzione?
  2. 6
    Sub FnGetSheetsName()
    
    Dim mainworkBook As Workbook
    
    Set mainworkBook = ActiveWorkbook
    
    For i = 1 To mainworkBook.Sheets.Count
    
    'Either we can put all names in an array , here we are printing all the names in Sheet 2
    
    mainworkBook.Sheets("Sheet2").Range("A" & i) = mainworkBook.Sheets(i).Name
    
    Next i
    
    End Sub
  3. 0

    È possibile utilizzare sotto il codice per ottenere il Foglio Attivo nome e cambiare a tuo nome preferito.

    Sub ChangeSheetName()
    
    Dim shName As String
    Dim currentName As String
    currentName = ActiveSheet.Name
    shName = InputBox("What name you want to give for your sheet")
    ThisWorkbook.Sheets(currentName).Name = shName
    
    End Sub
  4. 0

    Estendere il Codice per Mostrare il Foglio Selezionato(s) [ di uno o più fogli].

    Sub Show_SelectSheet()
      For Each xSheet In ThisWorkbook.Worksheets
         For Each xSelectSheet In ActiveWindow.SelectedSheets
             If xSheet.Name = xSelectSheet.Name Then
                '=== Show Selected Sheet ===
                GoTo xNext_SelectSheet
             End If
         Next xSelectSheet
      xSheet.Visible = False  
    xNext_SelectSheet:
    Next xSheet
    MsgBox "Show Selected Sheet(s) Completed !!!"
    end sub

Lascia un commento