2015-07-07 2 views
1

Я пытаюсь создать скрипт с кнопкой «удалить инструмент». Инструмент займет 5 строк. Таким образом, мой код удалит 5 строк при нажатии кнопки X, а также удалит кнопку X, потому что она больше не нужна.Excel VBA - использовать Application.Caller для получения сотовых координат для изображения

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

Sub DeleteRow() 

    Dim Check As Integer 
    Dim r As Range 
    Dim m As Picture 
    Dim strCallerTyp As String 

    strCallerTyp = TypeName(Application.Caller) 

    Select Case strCallerTyp 
     Case "String" 
      Check = MsgBox("Are you sure you want to remove this tool?", vbYesNoCancel, "Delete Tool") 
      If (Check = 6) Then 
       MsgBox Sheets("sheet1").Shapes(Application.Caller).TopLeftCell '*THIS LINE*' 
      End If 
     Case "Error" 
      MsgBox "Error" 
    End Select 
End Sub 

Почему эта строка (с пометкой в ​​коде):

MsgBox Sheets("sheet1").Shapes(Application.Caller).TopLeftCell

открывает окно сообщения, которое говорит "Excel" вместо координат?

TIA!

+0

Я голосую это просто потому, что я был на 100% не осведомлен о свойстве «Shape.TopLeftCell». Супер удобный! –

+0

@ DanWagner Это очень полезный инструмент в VBA! Он возвращает ячейку, в которой расположен верхний левый угол вашего объекта. –

ответ

2

добавить .Address к концу линии

MsgBox Sheets ("Лист1"). Фигуры (Application.Caller) .TopLeftCell.Address

Hth, Ojf

+0

Weird .. Раньше я пробовал это, и выход был неправильным ... Я, должно быть, набрал что-то неправильно. Теперь он работает, спасибо! Я соглашусь, как только смогу. –

Смежные вопросы