Supportnet / Forum / Tabellenkalkulation
trotz Dialogbox im Blatt bewegen?
Frage
N´abend werte Excelfreunde,
wenn ich eine Dialogbox aufrufe, kann ich dort nicht raus, um z.B. im Blatt etwas nachzulesen, sondern erst, wenn der Dialog verlassen worden ist
Läßt sich das umgehen in Excel97?
Also, Dialogfenster bleibt im Aufruf, aber ich scrolle durch die Tabelle und gebe erst danach die Dialogantwort?
MfG
schnallgonz
Antwort 1 von Ahnan
Hallo,
entweder du nimmst eine UserForm u. Modeless. Bei Excel97 gibt es allerdings die vbModeless-Methode noch nicht. In Excel97 müsste dies so realisiert werden:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, ByVal bEnable As Long) As Long
Private Sub UserForm_Activate()
Dim hwndXL&
hwndXL = FindWindow("XLMAIN", Application.Caption)
If hwndXL <> 0 Then
EnableWindow hwndXL, 1
Application.CellDragAndDrop = False
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.CellDragAndDrop = True
End Sub
Ist übrigens von Michael Schwimmer u. du kannst Scrollen !
Oder du erzeugst ein zeitlich gebundenes Popupfenster(so wie MsgBox):
Sub MsgBox_und_Scrollen()
Dim WsShell
Dim intText As Integer
Set WsShell = CreateObject("WScript.Shell")
intText = WsShell.Popup("Ja oder Nein ?", 10, "Abfrage", vbYesNo + vbQuestion)
If intText = vbYes Then
MsgBox "Es wurde Ja gedrückt !"
Else
MsgBox "Es wurde Nein gedrückt !"
End If
End Sub
Die 10 bedeutet, dass das Fenster 10 sekunden aktiv bleibt. Danach wird es geschlossen. Diese Zeit kannst du ja noch oben verstellen. Während das Fenster "aktiv" ist, kann man scrollen.
Vielleicht hilfts
Gruss
entweder du nimmst eine UserForm u. Modeless. Bei Excel97 gibt es allerdings die vbModeless-Methode noch nicht. In Excel97 müsste dies so realisiert werden:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, ByVal bEnable As Long) As Long
Private Sub UserForm_Activate()
Dim hwndXL&
hwndXL = FindWindow("XLMAIN", Application.Caption)
If hwndXL <> 0 Then
EnableWindow hwndXL, 1
Application.CellDragAndDrop = False
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.CellDragAndDrop = True
End Sub
Ist übrigens von Michael Schwimmer u. du kannst Scrollen !
Oder du erzeugst ein zeitlich gebundenes Popupfenster(so wie MsgBox):
Sub MsgBox_und_Scrollen()
Dim WsShell
Dim intText As Integer
Set WsShell = CreateObject("WScript.Shell")
intText = WsShell.Popup("Ja oder Nein ?", 10, "Abfrage", vbYesNo + vbQuestion)
If intText = vbYes Then
MsgBox "Es wurde Ja gedrückt !"
Else
MsgBox "Es wurde Nein gedrückt !"
End If
End Sub
Die 10 bedeutet, dass das Fenster 10 sekunden aktiv bleibt. Danach wird es geschlossen. Diese Zeit kannst du ja noch oben verstellen. Während das Fenster "aktiv" ist, kann man scrollen.
Vielleicht hilfts
Gruss
Antwort 2 von schnallgonz
Hi Ahnan,
vielen Dank für die Antwort, ist ja nicht gerade leichte Kost.
Ich verwende in meinem Makro ein Dialogfenster mit mehreren Listboxes, ich habe die erste Lösung verwendet.
Einfach in den Code der UserForm, fettich :-))
Ich dachte, da muss ich mehr Gehirnschmalz einsetzen.
Motto:
Praxis = alles funzt, aber keiner weiß, warum.
Theorie = alles wissen, wie es geht , aber nichts funzt.
Also, der Code erschließt sich mir nicht, aber es klappt wunderbar, Danke.
MfG
schnallgonz
vielen Dank für die Antwort, ist ja nicht gerade leichte Kost.
Ich verwende in meinem Makro ein Dialogfenster mit mehreren Listboxes, ich habe die erste Lösung verwendet.
Einfach in den Code der UserForm, fettich :-))
Ich dachte, da muss ich mehr Gehirnschmalz einsetzen.
Motto:
Praxis = alles funzt, aber keiner weiß, warum.
Theorie = alles wissen, wie es geht , aber nichts funzt.
Also, der Code erschließt sich mir nicht, aber es klappt wunderbar, Danke.
MfG
schnallgonz

