Получить имя листа с помощью Excel VBA

Я хотел бы создать функцию user-defined в Excel, которая может вернуть текущий рабочий лист. Я мог бы использовать

sheetname = ActiveSheet.Name

Но проблема с этим заключается в том, что она работает, и внезапно она начинает получать другое имя листа. Например, вместо SHEET I LOVE YOU он возвращает SHEET I HATE YOU.

Есть ли способ исправить это - или это возможно, потому что я думаю, что он не может быть статическим, но меняется?

Ответ 1

Function MySheet()

  ' uncomment the below line to make it Volatile
  'Application.Volatile
   MySheet = Application.Caller.Worksheet.Name

End Function

Это должна быть функция, которую вы ищете

Ответ 2

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

Это работает для меня.

worksheetName = ActiveSheet.Name  

Ответ 4

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

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

Ответ 5

Расширьте код для показа выбранных листов (одного или нескольких листов).

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