Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Msgbox mit Togglebutton löschen

Msgbox mit Togglebutton löschen
17.08.2005 12:27:24
Karl-Heinz
Hallo,
mein Problem mit VBA.
Ich suche mit dem Togglebutton aus einem Ordner eine Datei (hier eine wmf-Datei) mit dem Suchbegriff in Zelle a1. Die Grafik wird mit dem Togglebutton geöffnet und geschlossen. Wenn jetzt aber keine Wmf-Datei gefunden wird, möchte ich, dass sich eine Msgbox mit einem entsprechenden Hinweis öffnet. Diese Box soll dann aber auch mit dem zweiten Togglebutton click wieder verschwinden.
Wer kann mir helfen ?
Viele Grüße
Karl-Heinz
P.S.
Hier mein bisher gestricktes Makro:

Sub ToggleButton1_Click()
verz = "c:\Zeichnungen\"
typ = ".wmf"
Höhe = 387
ein = verz & Range("a1") & typ
If ToggleButton1.Value = True Then
ToggleButton1.Caption = "aus"
Range("a5").Select
With Application.FileSearch
.Filename = typ
.LookIn = verz
.Execute
End With
Pictures.Insert(ein).Name = "b"
Else
ToggleButton1.Caption = "ein"
Shapes("b").Delete
End If
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Msgbox mit Togglebutton löschen
17.08.2005 13:58:41
Nepumuk
Hi Karl-Heinz,
das geht prinzipiell schon. Dazu muss ich eine unabhängige MsgBox per API ausgeben. Das ist aber ein ziemlicher Aufwand. Einfacher und auch für deinen VBA - Level wäre ein ungebundenes Userform, da dieses Teil von Exel ist. Hier mal ein Beispielcode für eine MsgBox:
Option Explicit

Private Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" ( _
    ByVal hwnd As Long, _
    ByVal lpText As String, _
    ByVal lpCaption As String, _
    ByVal wType As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long) As Long
Private Declare Function SetWindowPos Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal hWndInsertAfter As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal wFlags As Long) As Long
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long

Private Const MB_DEFBUTTON1 = &H0&
Private Const MB_DEFBUTTON2 = &H100&
Private Const MB_DEFBUTTON3 = &H200&
Private Const MB_ICONASTERISK = &H40&
Private Const MB_ICONEXCLAMATION = &H30&
Private Const MB_ICONHAND = &H10&
Private Const MB_ICONINFORMATION = MB_ICONASTERISK
Private Const MB_ICONQUESTION = &H20&
Private Const MB_ICONSTOP = MB_ICONHAND
Private Const MB_OK = &H0&
Private Const MB_OKCANCEL = &H1&
Private Const MB_YESNO = &H4&
Private Const MB_YESNOCANCEL = &H3&
Private Const MB_ABORTRETRYIGNORE = &H2&
Private Const MB_RETRYCANCEL = &H5&

Private Const gcClassnameMSExcel = "XLMAIN"

Private Const SWP_NOSIZE = &H1&
Private Const SWP_NOMOVE = &H2&
Private Const SWP_NOACTIVATE = &H10&
Private Const SWP_SHOWWINDOW = &H40&

Private Const WM_CLOSE = &H10

Private Const strBoxTitle = "Information"

Private lngxlhWnd As Long, lngBoxhWnd As Long

Public Sub prcShowBox()
    lngxlhWnd = FindWindow(gcClassnameMSExcel, Application.Caption)
    SetTimer lngxlhWnd, 0, 10, AddressOf prcTimer
    MessageBox 0, "Hier dein Text", strBoxTitle, MB_OK Or MB_ICONINFORMATION
End Sub

Public Sub prcKillBox()
    PostMessage lngBoxhWnd, WM_CLOSE, 0&, 0&
End Sub

Private Sub prcTimer(ByVal hwnd As Long, ByVal nIDEvent As Long, _
        ByVal uElapse As Long, ByVal lpTimerFunc As Long)

    Call prcKillTimer
    Call prcSetWindow
End Sub

Private Sub prcKillTimer()
    KillTimer lngxlhWnd, 0
End Sub

Private Sub prcSetWindow()
    lngBoxhWnd = FindWindow("#32770", strBoxTitle)
    If lngBoxhWnd <> 0 Then
        Call SetWindowPos(lngxlhWnd, lngBoxhWnd, 0, 0, 0, 0, _
            SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW)
    End If
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Msgbox mit Togglebutton löschen
17.08.2005 20:54:38
Karl-Heinz
Hallo Nepumuk,
dass ist ja der helle Wahnsinn. Damit bin ich überfordert. Ich könnte es zwar nachschreiben; und es wird bestimmt auch funktionieren. Aber bei meinen Vorkenntnissen ist es im Moment für mich zuviel. Trotzdem vielen Dank für die schnelle Antwort. Ich bin immer wieder begeistert von diesem Forum.
Gruß
Karl-Heinz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige