17

我想创建一个可以返回当前工作表的user-defined函数。Excel我可以使用

sheetname = ActiveSheet.Name

但问题是,它起作用了,突然它开始得到不同的工作表名称。例如,而不是SHEET I LOVE YOU它返回SHEET I HATE YOU.

无论如何要解决这个问题 - 或者可能因为我认为它不能是静态的而是变化的?

4

6 回答 6

39
Function MySheet()

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

End Function

这应该是您正在寻找的功能

于 2013-10-11T17:03:19.483 回答
10

这对我有用。

worksheetName = ActiveSheet.Name  
于 2017-10-17T19:20:21.390 回答
8
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
于 2015-11-14T08:22:48.527 回答
0

扩展显示选定工作表的代码 [一张或多张工作表]。

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
于 2019-06-12T08:36:21.723 回答
-1

您可以使用以下代码获取活动工作表名称并将其更改为您的首选名称。

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
于 2015-10-24T10:04:03.213 回答
-3

我需要通过打开文件的名称来更改工作表名称

Sub Get_Data_From_File5()
    Dim FileToOpen As Variant
    Dim OpenBook As Workbook
    Dim currentName As String
    currentName = ActiveSheet.Name
    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range", FileFilter:="Excel Files (*.csv*),*csv*")
    If FileToOpen <> False Then
        Set OpenBook = Application.Workbooks.Open(FileToOpen)
        OpenBook.Sheets(1).Range("A1:g5000").Copy
        ThisWorkbook.Worksheets(currentName).Range("Aw1:bc5000").PasteSpecial xlPasteValues
        OpenBook.Close False
       
        
    End If
    Application.ScreenUpdating = True
End Sub
于 2020-12-27T20:37:54.330 回答