2013-10-11 8 views
8

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

sheetname = ActiveSheet.Name 

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

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

ответ

24
Function MySheet() 

    MySheet = Application.Caller.Worksheet.Name 

End Function 

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

+1

Большое спасибо - он прекрасно работает - действительно оценили - это мне очень помогает при выполнении ВПР – user2103670

+1

это был хороший повод для меня, чтобы узнать новый трюк с VBA :) – mucio

+2

должен быть Летучие –

-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 
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 
0

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

worksheetName = ActiveSheet.Name 
Смежные вопросы