В VBA как я могу проверить, имеет ли OLEObject свойство LinkedCell? - PullRequest
1 голос
/ 21 октября 2010

Есть ли способ проверить, имеет ли OLEObject свойство LinkedCell?Например, ярлыки и кнопки не имеют связанных ячеек, в то время как другие имеют.Я пытаюсь написать кусок кода, который может заменить связанный элемент, проходя по всем объектам OLEObject на листе.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Для проверки свойства LinkedCell необходимо выполнить стандартную технику VBA по отлову ошибки.

Public Sub test()

Dim cntl As Object
On Error Resume Next

For Each cntl In ActiveSheet.OLEObjects
Debug.Print cntl.Name

If IsError(cntl.LinkedCell) Then
    Debug.Print "No Linked Cell"
Else
    Debug.Print "Linked Cell"
End If

Next cntl

End Sub

Ниже показано, как это работает на чистом листе Excel с четырьмя различнымиэлементы управления.

alt text

0 голосов
/ 27 октября 2010
    For Each tempWk In trunkWb.Sheets
            For Each tempShape In tempWk.Shapes

            Set obj = tempShape.OLEFormat.Object

            'this bit of code can be confusing but it's necessary
            On Error GoTo LinkedCellNotValid
            With Application.WorksheetFunction
                obj.LinkedCell = .Substitute(obj.LinkedCell, "[" & branchWb.Name & "]", "")

                For j = 1 To i
                    Set oldwk = trunkWb.Worksheets(sheetNames(j - 1))
                    obj.LinkedCell = .Substitute(obj.LinkedCell, "_review_" & j, oldwk.Name)
                Next j
            End With
            GoTo LinkedCellDone
LinkedCellNotValid:
            'clear the error
            Err.Clear
            Resume LinkedCellDone

LinkedCellDone:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...