Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2015, 12:56   #1
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию Как узнать сколько кнопок на рабочем листе?

видимо циклом как то
RISagitov вне форума Ответить с цитированием
Старый 26.10.2015, 13:03   #2
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Выдерите с кода что нужно
Код:
Sub Object_Types_on_This_Slide()
    Dim it As String
    Dim i As Integer
    Dim Ctr As Integer
     For i = 1 To ActiveSheet.Shapes.Count
        'No need to select the object in order to use it
        With ActiveSheet.Shapes(i)

        'But it is easier to watch when the object is selected
        'This next line is for demonstration purposes only.
        'It is not necessary
        .Select

        Select Case .Type

            'Type 1
            Case msoAutoShape
                it = "an AutoShape. Type : " & .Type

            'Type 2
            Case msoCallout
                it = "a Callout. Type : " & .Type

            'Type 3
            Case msoChart
                it = "a Chart. Type : " & .Type

            'Type 4
            Case msoComment
                it = "a Comment. Type : " & .Type

            'Type 5
            Case msoFreeform
                it = "a Freeform. Type : " & .Type

            'Type 6
            Case msoGroup
                it = "a Group. Type : " & .Type

            ' If it's a group them iterate thru
            ' the items and list them

                it = it & vbCrLf & "Comprised of..."
                For Ctr = 1 To .GroupItems.Count
                    it = it & vbCrLf & _
                        .GroupItems(Ctr).Name & _
                        ". Type:" & .GroupItems(Ctr).Type
                Next Ctr

            'Type 7
            Case msoEmbeddedOLEObject
                it = "an Embedded OLE Object. Type : " & .Type

            'Type 8
            Case msoFormControl
                it = "a Form Control. Type : " & .Type

            'Type 9
            Case msoLine
                it = "a Line. Type : " & .Type

            'Type 10
            Case msoLinkedOLEObject
                it = "a Linked OLE Object. Type : " & .Type
                With .LinkFormat
                    it = it & vbCrLf & "My Source: " & _
                        .SourceFullName
                End With

            'Type 11
            Case msoLinkedPicture
                it = "a Linked Picture. Type : " & .Type
                With .LinkFormat
                    it = it & vbCrLf & "My Source: " & _
                        .SourceFullName
                End With

            'Type 12
            Case msoOLEControlObject
                it = "an OLE Control Object. Type : " & .Type

            'Type 13
            Case msoPicture
                it = "a embedded picture. Type : " & .Type

            'Type 14
            Case msoPlaceholder
                it = "a text placeholder (title or regular text--" & _
                     "not a standard textbox) object." & _
                     "Type : " & .Type

            'Type 15
            Case msoTextEffect
                it = "a WordArt (Text Effect). Type : " & .Type

            'Type 16
            Case msoMedia
                it = "a Media object .. sound, etc. Type : " & .Type
                With .LinkFormat
                    it = it & vbCrLf & " My Source: " & _
                    .SourceFullName
                End With

            'Type 17
            Case msoTextBox
                it = "a Text Box."

            'Type 18 = msoScriptAnchor, not defined in PPT pre-2000 so we use the numeric value
            'Case msoScriptAnchor
            Case 18
                it = " a ScriptAnchor. Type : " & .Type

            'Type 19 = msoTable, not defined in PPT pre-2000 so we use the numeric value
            'Case msoTable
            Case 19
                it = " a Table. Type : " & .Type

            'Type 19 = msoCanvas, not defined in PPT pre-2000 so we use the numeric value
            'Case msoCanvas
            Case 20
                it = " a Canvas. Type : " & .Type

            'Type 21 = msoDiagram, not defined in PPT pre-2000 so we use the numeric value
            'Case msoDiagram
            Case 22
                it = " a Diagram. Type : " & .Type

            'Type 22 = msoInk, not defined in PPT pre-2000 so we use the numeric value
            'Case msoInk
            Case 22
                it = " an Ink shape. Type : " & .Type

            'Type 23 = msoInkComment, not defined in PPT pre-2000 so we use the numeric value
            'Case msoInkComment
            Case 23
                it = " an InkComment. Type : " & .Type


            'Type -2
            Case msoShapeTypeMixed
                it = "a Mixed object (whatever that might be)." & _
                     "Type : " & .Type

            'Just in case
            Case Else
                it = "a mystery!? An undocumented object type?" & _
                        " Haven't found one of these yet!"
        End Select

        MsgBox ("I'm " & .Name & " " & it)
        End With
    Next i
End Sub
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 26.10.2015, 13:08   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub ShpCnt()
  Dim cnt As Long, shp
  For Each shp In ActiveSheet.Shapes
    If shp.Name Like "Button*" Then cnt = cnt + 1
  Next
  MsgBox cnt & " шт."
End Sub
(если Вы не парились с переименованием вставляемых на лист кнопок)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.10.2015, 13:37   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Хм, это что понимать под "кнопкой"
Число кнопок с панели "Формы": activesheet.buttons.count
Число кнопок типа "Элементы ActiveX"
Код:
Sub bb()
Dim x As OLEObject, n As Long
  For Each x In ActiveSheet.OLEObjects
    If TypeOf x.Object Is MSForms.CommandButton Then n = n + 1
  Next
  MsgBox n
End Sub
А если "кнопка" это любая автофигура или картинка или кнопка с панели "Формы", которой назначен макрос, то так:
Код:
Sub bb()
Dim x As Shape, n As Long
  For Each x In ActiveSheet.Shapes
    If x.OnAction <> "" Then n = n + 1
  Next
  MsgBox n
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 26.10.2015 в 13:45.
Казанский вне форума Ответить с цитированием
Старый 26.10.2015, 13:45   #5
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

ну и код от ув. EducatedFool
Код:
Sub ВыводСпискаАвтофигурСКоординатами()
    Dim sh As Worksheet, sha As Shape, n As Integer
    For Each sh In ThisWorkbook.Worksheets
        Debug.Print "=== Лист «" & sh.Name & "» - количество фигур: " & sh.Shapes.Count & " ==="
        For Each sha In sh.Shapes
            n = n + 1: Debug.Print "   Фигура №" & n & " с названием «" & sha.Name & "»"
            Debug.Print "      Координаты верхнего левого угла: X=" & sha.Left & "; Y=" & sha.Top
            Debug.Print "      Координаты правого нижнего угла: X=" & sha.Left + sha.Width & "; Y=" & sha.Top + sha.Height
            Debug.Print "      Размеры фигуры: ширина=" & sha.Width & "; высота=" & sha.Height
            Debug.Print "      Тип фигуры: " & sha.Type & "; тип автофигуры: " & sha.AutoShapeType
        Next sha
        Debug.Print "=== Конец просмотра листа «" & sh.Name & "» ===" & vbNewLine
    Next sh
End Sub
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 26.10.2015, 15:01   #6
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

thx
даже не знаю как Вас благодарить
и нужно ли))
RISagitov вне форума Ответить с цитированием
Старый 26.10.2015, 15:14   #7
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Скажите что за мегапроэкт пишете, что за последний месяц столько тем создали? ;-)
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 26.10.2015, 15:51   #8
RISagitov
Форумчанин
 
Регистрация: 19.05.2012
Сообщений: 237
По умолчанию

Цитата:
Сообщение от AleksandrH Посмотреть сообщение
Скажите что за мегапроэкт пишете, что за последний месяц столько тем создали? ;-)
создаю для себя инструмент
постоянно по потребностям создаю новые возможности

работая аналитиком, приходится постоянно высматривать данные, чтоб в глазах сильно не рябило и чтоб моя эффективность была выше

задачи решаю нетривиальные
связанные с антифродом в микрофинансировании
RISagitov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, сколько в тексте пробелов Скрипт Microsoft Office Word 13 11.02.2013 13:58
как увеличить число строк на рабочем листе? kragius Microsoft Office Excel 11 22.09.2011 13:27
Как узнать сколько раз просматривался файл vovanblch Безопасность, Шифрование 15 02.05.2011 01:15
как узнать сколько кликов было по кнопке . s1s1s1 Общие вопросы Delphi 5 13.02.2011 22:47
[PHP] Как узнать сколько прошло времени? RESPECT8 PHP 1 24.10.2010 09:43