Или так, если нужно это имя дальше использовать: Sub NameTable() For Each obj In ActiveSheet.ListObjects If obj.Active Then nameTbl = obj.Name: Exit For Next obj Debug.Print nameTbl End 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
Сообщение отредактировал lapin9126 - Пятница, 06.01.2017, 18:36
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]
[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
Нормально имя устанавливается в sName, а ругается на то, что obj как String объявлена. Для For Each тип должен быть объект Я конечно весь код не прогонял, но вот эта запись ActiveWorkbook.sName. странноватая, должно быть как-то так ActiveWorkbook.worksheets(sName).
Нормально имя устанавливается в sName, а ругается на то, что obj как String объявлена. Для For Each тип должен быть объект Я конечно весь код не прогонял, но вот эта запись ActiveWorkbook.sName. странноватая, должно быть как-то так ActiveWorkbook.worksheets(sName).Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Сообщение отредактировал Udik - Пятница, 06.01.2017, 19:31
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]
а вот так не подойдет?: [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