Узнать имя активного листа |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
I would like to create an user-defined
function in Excel
that can return the current worksheet. I could use the
sheetname = ActiveSheet.Name
But the problem with this is, it works and suddenly it starts to get different sheet name. For example, instead of SHEET I LOVE YOU
it returns SHEET I HATE YOU
.
Is there anyway to fix this — or it might possible because I think it can not be static but varies?
asked Oct 11, 2013 at 16:47
user2103670user2103670
1,59110 gold badges22 silver badges24 bronze badges
0
Function MySheet()
' uncomment the below line to make it Volatile
'Application.Volatile
MySheet = Application.Caller.Worksheet.Name
End Function
This should be the function you are looking for
sapbucket
6,64514 gold badges55 silver badges94 bronze badges
answered Oct 11, 2013 at 17:03
0
This works for me.
worksheetName = ActiveSheet.Name
answered Oct 17, 2017 at 19:20
mobermemoberme
6597 silver badges13 bronze badges
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
TylerH
20.6k64 gold badges76 silver badges97 bronze badges
answered Nov 14, 2015 at 8:22
josefjosef
8449 silver badges8 bronze badges
Extend Code for Show Selected Sheet(s) [ one or more sheets].
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
answered Jun 12, 2019 at 8:36
You can use below code to get the Active Sheet name and change it to yours preferred name.
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
answered Oct 24, 2015 at 10:04
i need to change the sheet name by the name of the file was opened
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
Ian Campbell
23k14 gold badges35 silver badges57 bronze badges
answered Dec 27, 2020 at 20:37
Помогаю со студенческими работами здесь
Как узнать точную высоту листа в Excel?
Суммирование всех ячеек до первого HPageBreak не подходит.
Как узнать Item листа в книге Excel
есть большая книга (листов больше 1000)
Не ругайте — так удобнее мне для своих целей
Name листов…
Using Microsoft.Office.Interop.Excel как изменить имя листа
Добрый день! В excel лист имеет два имени (то, что отображается на вкладке и то, как к нему…
Получить имя активного файла Excel и создать копию
Скрипт должен получить имя активного файла, создать его копию, и в копии имени заменить некоторые…
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму:
Werty Пользователь Сообщений: 227 |
Здравствуйте! Ура! Новое оформление! Начинка надеюсь осталась лучше Задача. С уважением, Спокойствие — величайшее проявление силы. |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
ActiveSheet.Name? P.S. Файл не смотрел Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Werty Пользователь Сообщений: 227 |
Здравствуйте, The_Prist! Этот метод не подходит, поскольку пользователь может выбрать любой лист. Спокойствие — величайшее проявление силы. |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Прикольно: |
Kuzmich Пользователь Сообщений: 7998 |
Если вы выбрали лист, то он и будет активным |
Werty Пользователь Сообщений: 227 |
Здравствуйте, Юрий М! Дело в том, что пользователь, находясь на листе «Лист1», может выделить диапазон на листе с именем «Лист100». Я приложил файл поскольку не могу по другому объяснить ситуацию. С уважением, Спокойствие — величайшее проявление силы. |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#7 21.01.2013 20:29:27
Не может — для этого нужно сначала выделить Лист100. |
||
Werty Пользователь Сообщений: 227 |
Может … сотрите файл. Буду рад более простому варианту реализации. Спокойствие — величайшее проявление силы. |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Отбой! Выделить с помощью InputBox? |
Werty Пользователь Сообщений: 227 |
#10 21.01.2013 20:32:45 не понял …
Изменено: Werty — 22.01.2013 01:35:49 Спокойствие — величайшее проявление силы. |
||
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
MsgBox «Вы указали диапазон ячеек на литсе с именем » & Name.Worksheet.Name, 64, «Сообщение» |
Werty Пользователь Сообщений: 227 |
Да, классно Работает. А как? Спокойствие — величайшее проявление силы. |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Что как? Нормально работает )) Только там нужно подправить сообщение: литсе=листе |
Werty Пользователь Сообщений: 227 |
Это да, подправлю. Спокойствие — величайшее проявление силы. |
Werty Пользователь Сообщений: 227 |
Да, получается есть … Range(«A1»).Worksheet.Name Благодарю Вас, Юрий М! С уважением, Спокойствие — величайшее проявление силы. |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
В общих чертах верно, только пару замечаний: |
Werty Пользователь Сообщений: 227 |
Согласен с Вами. В рабочем фале переменные сделаны по Вашим рекомендациям Спасибо Вам Юрий М за то что Вы есть! С уважением, Спокойствие — величайшее проявление силы. |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Вообще есть еще более явный способ получить имя листа для диапазона, полученного данным образом: P.S. Посоветовал бы сразу задавать вопрос нормально и понятно не только Вам, но и другим участникам форума. Имя листа выделенного и листа для диапазона, полученного через Inputbox это разные вещи. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#19 21.01.2013 21:56:11 А я и забыл про родителя )) |
How to get the name of a worksheet in Excel using VBA and Macros and also how to store that name in a variable for later use.
This is rather simple but there are a couple different ways to do it.
First, we can reference the currently active worksheet and put Name after it:
ActiveSheet.Name
This gets us the name of the currently active sheet, which is also usually the currently visible sheet.
Now, to store this in a variable, just do this:
shtName = ActiveSheet.Name
To get the name of any sheet in the workbook we can use the index number to find it like this:
Worksheets(2).Name
Here, the 2 means that we want to access the second worksheet in the workbook. 1 would mean the first worksheet in the workbook and Name once again means that we want to get the name of it.
This method is very useful when looping through the worksheets since you know that you can always just start at 1 and add 1 until you get to the end.
To put the name in a variable, we do like we did before:
shtName = Worksheets(2).Name
Note that you can name the variable anything you want as long as it doesnt conflict with a VBA function. So, you dont have to use shtName as your variable.
Here is a screenshot of the macro with two message boxes that output the names of the sheets:
You can copy and paste this macro from the attached workbook, located below this tutorial or in the side-bar.
This shows you how simple it is to get the name of worksheets in VBA and I hope you found it helpful!
Similar Content on TeachExcel
Activate or Navigate to a Worksheet using Macros VBA in Excel
Tutorial: Make a particular worksheet visible using a macro in Excel.
This is called activating a wo…
Change the Name of a Chart in Excel
Tutorial:
How to change the name of a chart in Excel.
This allows you to use a more intuitive char…
Output the File Path to and Name of a Workbook in Excel — UDF
Macro: Free Excel UDF (user defined function) that displays the full file path and name of an Exc…
Remove Gridlines from Only Part of a Worksheet in Excel
Tutorial:
How to remove gridlines from a part of a worksheet in Excel instead of the entire workshe…
Get the Number of Workdays Between Two Dates in Excel
Tutorial: How to calculate the total number of working days between two dates in Excel. This allow…
Highlight, Sort, and Group the Top and Bottom Performers in a List in Excel
Tutorial:
How to highlight the rows of the top and bottom performers in a list of data.
This allows…