Excel VBA автоматически переименовывает флажки - PullRequest
1 голос
/ 20 мая 2011

В настоящее время я работаю над парой листов Excel с множеством флажков.Когда вы вводите флажок, он имеет имя CheckBox1, CheckBox2 и т. Д., Но возможно ли их автоматически переименовать?В моем коде мне теперь нужно переименовать все флажки в Rij11_1, Rij11_2 и т. Д.

Это сэкономит мне много времени, если это можно будет сделать автоматически, строка за строкой.

кто-нибудь знает как это сделать?

Спасибо большое!

С уважением, Марк

1 Ответ

1 голос
/ 20 мая 2011

Предполагая, что флажки находятся на листе с кодовым названием Sheet1

Sub test()

Dim obj As OLEObject, ChkBoxRow as long

ChkBoxRow = 1 'Only change checkboxes with topleft corner in row 1

With Sheet1
'Loop AX controls
For Each obj In .OLEObjects
    'Check for checkbox only
    If TypeName(obj.Object) = "CheckBox" Then

        'Examples to identify location (as suggested by Dick Kusleika)
        'ChkBoxRow = obj.TopLeftCell.Row
        'ChkBoxCol = obj.TopLeftCell.Column
        'ChkBoxAdd = obj.TopLeftCell.Address

        'ChkBoxRow = obj.BottomRightCell.Row
        'ChkBoxCol = obj.BottomRightCell.Column
        'ChkBoxAdd = obj.BottomRightCell.Address
        'etc

        if obj.TopLeftCell.Row = ChkBoxRow then
           obj.Name = "Rij11_" & Right(obj.Name, Len(obj.Name) - 8)
        end if

    End If
Next obj
End With
End Sub

Я обновил, показывая хороший метод Дик Куслейка указал на днях, чтобы найти, где находятся флажки.Вы можете проверить на If obj.TopLeftCell.Row = 1 Then и т. Д.

...