Hallo,
ich kann den Sinn und Zweck nicht ganz nachvollziehen.
Eine Msgbox oder Inputbox wird immer mit "showModal = true" angezeigt. Dies bedeutet, dass der Anwender keine Möglichkeit hat, nach dem Anzeigen eine Zelle auszuwählen.
Lösung: Userform - Eine Userform kann auch als Nicht Modale Form angezeigt werden.
Folgende Lösung kommt dem gewünschten Szenario ziemlich Nahe:
Userform:
Controls:
Label : lblZelle
Commandbutton: cmdOK
Private Sub cmdOK_Click()
Dim bk As Workbook
Dim sh As Worksheet
Dim iCnt As Integer
ReDim rngCell(Application.Workbooks.Count)
ReDim strWorkbook(Application.Workbooks.Count)
ReDim strWorksheet(Application.Workbooks.Count)
For Each bk In Application.Workbooks
iCnt = iCnt + 1
strWorkbook(iCnt) = bk.Name
Set sh = bk.ActiveSheet
strWorksheet(iCnt) = sh.Name
' ToDo: Aktive Zelle in Tabelle sh ermitteln
' set rngCell(iCnt) = ???
If bk.Name <> ActiveWorkbook.Name Then
Debug.Print bk.Name
End If
Next
Unload Me
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim rng As Range
Dim bk As Workbook
Set bk = ActiveWorkbook
Set rng = Application.ActiveCell
Me.lblZelle.Caption = "[" & bk.Name & "]" & rng.Worksheet.Name & "!" & rng.Address
' [Mappe1]Tabelle1!$B$3
End Sub
Globale Variablen:
Dim rngCell() As Range
Dim strWorkbook() As String
Dim strWorksheet() As String
Start-Makro:
Sub Begin_Action()
UserForm1.Show (False)
End Sub
--------------------------------------------------
Nach dem Ausführen des Userforms wird die Aktive Zelle im Userform angezeigt, sobald der Mauszeiger sich innerhalb des Userforms bewegt.
Nach dem Anklicken des Butons cmdOK werden ale Arbeitsmappen durchlaufen und die Informationen in den Globalen Variablen (als Array) gespeichert.
In diesem Verfahren kann die aktuelle Zelle nicht ermittelt werden. Diese kann nur von der aktiven Arbeitsmappe und Aktiven Tabelle ermittelt werden.
VG, BigBen
|