簡體   English   中英

VBA Excel:在另一個工作簿上獲取單擊的單元格地址

[英]VBA Excel: Get the clicked cell´s adress on another workbook

我有一個帶有宏的 excel 文件 A,我必須通過用戶單擊它來檢索另一個 excel 文件 B 中的單元格地址。

宏看起來像這樣。

課堂上

Public WithEvents appevent As Application

Private Sub appevent_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
ClickedCell = ActiveCell.Address
End Sub

模塊中

Sub ClickedCellSub()
Dim WbA As Variant, WbB As Variant
WbA = ThisWorkbook.Name
WbB = "B.xlsx"
MsgBox "Please double click on the Assembly SS 00 you want to compare"
Set myobject.appevent = Application
Workbooks(WbB).Sheets(1).Activate
Set myobject.appevent = Nothing
MsgBox ClickedCell
Workbooks(WbA).Activate
End Sub

問題是,宏不會等待另一個 Excel 工作表上的 DoubleClick 事件並結束。

如何在事件發生之前停止宏?

提前謝謝了!

我會使用事件沉沒,但不確定您是如何處理它的,但這就是我的使用方式。

在類中使用以下內容:

Private WithEvents wb As Excel.Workbook
Private rng As Excel.Range

Public Event evtCellClicked(rngClicked As Excel.Range)
Public Event evtCellDoubleClicked(rngDoubleCliecked As Excel.Range)

Public Sub init(wbInput As Excel.Workbook)
    Set wb = wbInput
End Sub

Public Property Get CellClicked() As Excel.Range
    CellClicked = rng
End Property

Private Sub wb_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Set rng = Target
    RaiseEvent evtCellClicked(Target)
End Sub

Private Sub wb_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Set rng = Target
    RaiseEvent evtCellClicked(Target)
End Sub

我改變了代碼。 在模塊中:

enter Option Explicit
Private mobjApplication As clsApplication
Global ClickedCell As String

Sub Vergleichen()
Dim StruktBer As Variant        


StruktBer = Application.GetOpenFilename(, , "Strukturbericht öffnen")                       '####Name der Datei aus der Strukturberich

Set mobjApplication = New clsApplication
Workbooks.Open StruktBer

MsgBox "Bitte die Sachnummer der Strukturstufe '00' anklicken die man vergleichen möchte"

End Sub

Sub GOFURTHER

在課堂里:

Option Explicit

Private WithEvents mobjApplication As Application

Private Sub Class_Initialize()
Set mobjApplication = Application
End Sub

Private Sub mobjApplication_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ClickedCell = Target.Address
    Set mobjApplication = Nothing
    Call GOFURTHER

End Sub

宏停止,直到用戶單擊另一個 Excel 表。 有沒有辦法不退出第一個子並留在第一個?

為什么不簡單地使用 InputBox ?
https://docs.microsoft.com/en-us/office/vba/api/excel.application.inputbox
在您的提示中,您要求用戶在適當的文檔中選擇一個范圍,就是這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM