Наименование листа excel vba

Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

‘По уникальному имени

УникИмяЛиста

‘По индексу

Worksheets(N)

‘По имени листа на ярлычке

Worksheets(«Имя листа»)

  • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

‘В активной книге

Worksheets.Count

‘В любой открытой книге,

‘например, в «Книга1.xlsm»

Workbooks(«Книга1.xlsm»).Worksheets.Count

Переименование листов

В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

expression.Name

где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

Лист1.Name = «Реестр»

Worksheets(1).Name = «Реестр»

Worksheets(«МойЛист»).Name = «Реестр»

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True — лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

Примеры:

Лист1.Visible = xlSheetHidden

Лист2.Visible = 1

Worksheets(Worksheets.Count).Visible = xlVeryHidden

Worksheets(«МойЛист»).Visible = True

Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.

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?

Community's user avatar

asked Oct 11, 2013 at 16:47

user2103670's user avatar

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's user avatar

sapbucket

6,64514 gold badges55 silver badges94 bronze badges

answered Oct 11, 2013 at 17:03

mucio's user avatar

0

This works for me.

worksheetName = ActiveSheet.Name  

answered Oct 17, 2017 at 19:20

moberme's user avatar

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's user avatar

TylerH

20.6k64 gold badges76 silver badges97 bronze badges

answered Nov 14, 2015 at 8:22

josef's user avatar

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

ChaCha CJ Rune's user avatar

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

Rohit Pal's user avatar

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's user avatar

Ian Campbell

23k14 gold badges35 silver badges57 bronze badges

answered Dec 27, 2020 at 20:37

user14898005's user avatar

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:

816080e169d2d432224a7bca8941dd4c.png

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…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Узнать имя активного листа

lapin9126

Дата: Пятница, 06.01.2017, 18:35 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Здравствуйте, с наступающим. На данном форуме нашёл тему: Узнать имя активной таблицы (Макросы/Sub).
в которой предложено решение следующим макросом

Или так, если нужно это имя дальше использовать:
Sub NameTable()
For Each obj In ActiveSheet.ListObjects
If obj.Active Then nameTbl = obj.Name: Exit For
Next obj
Debug.Print nameTbl
End Sub

Можно ли с помощью такого приёма узнать имя активного листа и использовать его дальше, в ходе выполнения макроса, который будет обращаться к имени листа. Ну о-о-о-о-о-очень нужно.

Сообщение отредактировал lapin9126Пятница, 06.01.2017, 18:36

 

Ответить

Pelena

Дата: Пятница, 06.01.2017, 18:43 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Здравствуйте.
[vba][/vba]
не вариант?


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 18:48 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Пробовал, в моём случае не подходит.

 

Ответить

Udik

Дата: Пятница, 06.01.2017, 19:07 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1588


Репутация:

192

±

Замечаний:
0% ±


Excel 2016 х 64

в моём случае не подходит

Везде работает а у Вас нет, тогда показывайте файл где не работает.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 19:10 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

[vba]

Код

Sub Сортировка_2()
ActiveWorkbook.CheckCompatibility = False ‘ отменяем проверку совместимости
‘—————————————————————————-
    Dim sName, obj As String
    sName = ActiveWorkbook.ActiveSheet.Name ‘ имя активного листа
‘—————————————————————————-
    For Each obj In sName.ListObjects ‘ получение имя активной таблицы
        If obj.Active Then nameTbl = obj.Name: Exit For
    Next obj
    Debug.Print nameTbl
‘—————————————————————————-
ActiveWorkbook.sName.ListObjects(obj).Sort. _
        SortFields.Clear
    ActiveWorkbook.sName.ListObjects(obj).Sort. _
        SortFields.Add Key:=Range(«obj[Group]»), SortOn:= _
        xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        «КУПЛЮ :,ПРОДАМ :,АРЕНДА :,НЕДВИЖИМОСТЬ :,ТРАНСПОРТ :,УСЛУГИ :,РАБОТА :,РАЗНОЕ :» _
        , DataOption:=xlSortNormal
    With ActiveWorkbook.sName.ListObjects.obj.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

[/vba]

 

Ответить

Udik

Дата: Пятница, 06.01.2017, 19:25 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1588


Репутация:

192

±

Замечаний:
0% ±


Excel 2016 х 64

Нормально имя устанавливается в sName, а ругается на то, что obj как String объявлена. Для For Each тип должен быть объект
Я конечно весь код не прогонял, но вот эта запись
ActiveWorkbook.sName. странноватая, должно быть как-то так ActiveWorkbook.worksheets(sName).


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com

Сообщение отредактировал UdikПятница, 06.01.2017, 19:31

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 19:33 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Спасибо, придётся создавать новую тему, чтобы не получить предупреждение, за второй вопрос в этой теме. :(

 

Ответить

Wasilich

Дата: Пятница, 06.01.2017, 19:36 |
Сообщение № 8

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Новогодние странности. :) Если по теме, проверьте код:
[vba]

Код

Sub naimlist()
Dim ИмяАктивногоЛиста$
ИмяАктивногоЛиста = ActiveSheet.Name
MsgBox ИмяАктивногоЛиста
End Sub

[/vba]

Сообщение отредактировал WasilichПятница, 06.01.2017, 19:40

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 19:39 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

S
ub naimlist()
Dim ИмяАктивногоЛиста$
ИмяАктивногоЛиста = ActiveSheet.Name
MsgBox ИмяАктивногоЛиста
End Sub

Макрос рабочий имя определяет. Но как его прикрутить к моему случаю?

 

Ответить

Wasilich

Дата: Пятница, 06.01.2017, 19:52 |
Сообщение № 10

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Так ведь определяет же!
[vba]

Код

Sub naimlist()
  Dim sName$
  sName = ActiveWorkbook.ActiveSheet.Name ‘ имя активного листа
  MsgBox sName
End Sub

[/vba] А дальше, Ваш код не по теме.

Сообщение отредактировал WasilichПятница, 06.01.2017, 20:14

 

Ответить

nilem

Дата: Пятница, 06.01.2017, 19:56 |
Сообщение № 11

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

а вот так не подойдет?:
[vba]

Код

Sub Сортировка_2()
With ActiveSheet.ListObjects(1)
    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=.Range.Columns(9), SortOn:= _
                         xlSortOnValues, Order:=xlAscending, CustomOrder:= _
                         «КУПЛЮ :,ПРОДАМ :,АРЕНДА :,НЕДВИЖИМОСТЬ :,ТРАНСПОРТ :,УСЛУГИ :,РАБОТА :,РАЗНОЕ :» _
                         , DataOption:=xlSortNormal
    With .Sort
        .Header = xlYes
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

[/vba]


Яндекс.Деньги 4100159601573

 

Ответить

lapin9126

Дата: Пятница, 06.01.2017, 20:03 |
Сообщение № 12

Группа: Пользователи

Ранг: Новичок

Сообщений: 38


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

nilem, Спасибо то что нужно, «Краткость сестра таланта» hands

 

Ответить

Wasilich

Дата: Пятница, 06.01.2017, 20:13 |
Сообщение № 13

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

[offtop]Короче, тема не в теме.
Хорошо что nilem экстрасенс. :D [/offtop]

 

Ответить

Содержание

  • Получить имя листа
  • Переименовать лист
  • Проверьте, существует ли имя листа
  • Копировать лист и переименовать

В этом руководстве будет рассмотрено взаимодействие с именами листов в VBA.

Получить имя листа

Имена листов хранятся в Имя собственность Таблицы или Рабочие листы объект. Имя листа — это имя «вкладки», которое отображается в нижней части Excel:

Получить имя ActiveSheet

Это отобразит имя ActiveSheet в окне сообщения:

1 MsgBox ActiveSheet.Name

Получить имя листа по номеру индекса

Это отобразит имя первого рабочего листа в окне сообщения:

1 MsgBox Sheets (1) .Name

Это отобразит имя последнего рабочего листа в книге:

1 MsgBox Sheets (Sheets.Count) .Name

Получить имя листа по кодовому имени

В редакторе VBA есть возможность изменить «кодовое имя» листа. Кодовое имя не отображается для пользователя Excel и его можно увидеть только в редакторе VBA:

В VBA при работе с таблицами вы можете ссылаться на обычное имя вкладки:

1 Таблицы («TabName»). Активировать

или кодовое имя VBA:

Ссылка на кодовое имя желательно в случае, если имя вкладки «Лист» когда-либо изменится. Если вы разрешаете пользователю Excel изменять имена листов, вам следует указать кодовое имя в коде VBA, чтобы несоответствие имени вкладки листа не приводило к ошибке. Кодовые названия листов обсуждаются здесь более подробно.

Чтобы получить имя листа с использованием имени кода VBA, выполните следующие действия:

Переименовать лист

Вы можете переименовать Таблицы, настроив имя собственность Таблицы или Рабочие листы объект.

Переименовать ActiveSheet

1 ActiveSheet.Name = «NewName»

Переименовать лист по имени

1 Таблицы («OldSheet»). Name = «NewName»

Переименовать лист по порядковому номеру листа

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

1 Таблицы (1) .Name = «NewName»

Переименовать лист по кодовому имени

Этот код переименует лист, используя его кодовое имя VBA (обсуждалось выше):

1 Component.Name = «NewName»

Проверьте, существует ли имя листа

Мы создали функцию, чтобы проверить, существует ли уже Лист с определенным именем.

123456789101112 ‘Проверить, существует ли диапазон на листе.’Оставьте поле пустым, чтобы проверить, существует ли лист’Входы:WhatSheet — строковое имя листа (например, Sheet1)WhatRange (Необязательно, по умолчанию = «A1») — строковое имя диапазона (например, «A1»)Функция RangeExists (WhatSheet как строка, необязательно ByVal WhatRange As String = «A1») как логическоеТусклый тест как диапазонПри ошибке Возобновить ДалееУстановите test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Номер ошибки = 0При ошибке GoTo 0Конечная функция

Функция вернет ИСТИНА, если лист существует, или ЛОЖЬ, если нет.

Используйте функцию так:

123 Sub Test_SheetExists ()MsgBox RangeExists («настройка»)Конец подписки

Копировать лист и переименовать

Этот пример взят из нашей статьи о копировании листов.

После копирования и вставки листа вновь созданный лист становится ActiveSheet. Итак, чтобы переименовать скопированный лист, просто используйте ActiveSheet.Name:

12345678 Sub CopySheetRename2 ()Листы («Sheet1»). Копировать после: = Sheets (Sheets.Count)При ошибке Возобновить ДалееActiveSheet.Name = «LastSheet»При ошибке GoTo 0Конец подписки

Примечание. Мы добавили обработку ошибок, чтобы избежать ошибок, если имя листа уже существует.

Вы поможете развитию сайта, поделившись страницей с друзьями

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Здравствуйте!

Ура! Новое оформление! Начинка надеюсь осталась лучше  :)

Задача.
Есть книга с любым кол-вом листов.
Пользователь выделяет любой нужный ему лист.
Вопрос.
Как узнать имя выделенного листа?

С уважением,
Василий.

Спокойствие — величайшее проявление силы.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

ActiveSheet.Name?

P.S. Файл не смотрел

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Здравствуйте, The_Prist!

Этот метод не подходит, поскольку пользователь может выбрать любой лист.

Спокойствие — величайшее проявление силы.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Прикольно:
1. Пользователь выделяет любой нужный ему лист.
2. не подходит, поскольку пользователь может выбрать любой лист.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Если вы выбрали лист, то он и будет активным

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Здравствуйте, Юрий М!

Дело в том, что пользователь, находясь на листе «Лист1», может выделить диапазон на листе с именем «Лист100». Я приложил файл поскольку не могу по другому объяснить ситуацию.
Прошу Вас поправить меня на примере прилагаемого файла или любым другим удобным для Вас способом.

С уважением,
Василий.

Спокойствие — величайшее проявление силы.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#7

21.01.2013 20:29:27

Цитата
Werty пишет:
Дело в том, что пользователь, находясь на листе «Лист1», может выделить диапазон на листе с именем «Лист100»

Не может — для этого нужно сначала выделить Лист100.

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Может … сотрите файл. Буду рад более простому варианту реализации.

Спокойствие — величайшее проявление силы.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Отбой! Выделить с помощью InputBox?

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

#10

21.01.2013 20:32:45

не понял …

Код
Sub Пример()
Dim Name As Range
Dim scName 'As Range

On Error Resume Next
 Set Name = Application.InputBox( _
 Prompt:="Укажите любой диапазон ячеек на любом листе!", _
 Title:="Сообщение", _
 Default:=ActiveSheet.Name, _
 Type:=  8)  
scName = ActiveSheet.Name
 On Error GoTo 0

 'если действие было отменено
 If Name Is Nothing Then
 MsgBox "Отмена действия", 64, "Сообщение": Exit Sub
 Else
 MsgBox "Вы указали диапазон ячеек на литсе с именем " & scName, 64, "Сообщение"
 End If
End Sub

Изменено: Werty22.01.2013 01:35:49

Спокойствие — величайшее проявление силы.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

MsgBox «Вы указали диапазон ячеек на литсе с именем » & Name.Worksheet.Name, 64, «Сообщение»

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Да, классно  :)  Работает. А как?

Спокойствие — величайшее проявление силы.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Что как? Нормально работает )) Только там нужно подправить сообщение: литсе=листе :)

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Это да, подправлю.
А так получается что у диапазона есть свойство Лист, у которого есть свойство Имя …. т.е. от ячейки идём к название листа к которому эта ячейка относится. Верно?

Спокойствие — величайшее проявление силы.

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Да, получается есть … Range(«A1»).Worksheet.Name

Благодарю Вас, Юрий М!

С уважением,
ПАХОМ

Спокойствие — величайшее проявление силы.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

В общих чертах верно, только пару замечаний:
1. Не присваивайте переменным подобные имена (Name, Address…). Могут случиться неприятности.
2. В Вашем случае с Type:=8 — тип переменной будет Range — диапазон. А, следовательно, есть резон дать переменной адекватное имя. Например, MyRange, Rng, и т.п.

 

Werty

Пользователь

Сообщений: 227
Регистрация: 21.01.2013

Согласен с Вами. В рабочем фале переменные сделаны по Вашим рекомендациям  :)  
Просто когда готовил пример спешил и забыл про них (привычка пока слабовата наверное).

Спасибо Вам Юрий М за то что Вы есть!  :)  
И всем остальным участникам  :)

С уважением,
ПАХОМ

Спокойствие — величайшее проявление силы.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

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

P.S. Посоветовал бы сразу задавать вопрос нормально и понятно не только Вам, но и другим участникам форума. Имя листа выделенного и листа для диапазона, полученного через Inputbox это разные вещи.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#19

21.01.2013 21:56:11

А я и забыл про родителя ))

Понравилась статья? Поделить с друзьями:
  • Наименование дня недели в excel
  • Наилучшая прямая в excel
  • Наивероятнейшее число в excel
  • Наибольший элемент массива excel
  • Наибольший наименьший с если excel