2013-10-11 10 views
8

Exceluser-definedという関数を作成して、現在のワークシートを返すことができます。私は使用することができる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

を、それはして行っているとき、それは私に多くのことができます私はWorkbooks.Nameと同じようにThisWorksheet.Nameを持たないVBAと変わっていると感じます。 – mucio

+2

:) VBAで新しいトリックを学ぶための良い口実をVLOOKUP –

-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 
非常
関連する問題