Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Eigenes Userform

Betrifft: Eigenes Userform von: Peter F.
Geschrieben am: 08.08.2008 19:51:20

Hallo Excel-Fans,

ich komme bisher nur mit einer JA/NEIN-Abfrage zurecht, wie nachfolgend dargestellt:

Sub Abfrage()
  
     Prompt = "Erklärung"
     DialogArt = vbYesNo + vbCritical + vbDefaultButton2
     Title = "EntwederOder"
     Antwort = MsgBox(Prompt, DialogArt, Title)
  
  If Antwort = vbYes Then
     MsgBox "Entweder"
       End If
       
  If Antwort = vbNo Then
   MsgBox "Oder"  
   End If
  
End Sub



Ich möchte die Buttons aber nicht mit Ja und Nein beschriften, sondern mit eigenen Texten.
Für Euch Experten ist das bestimmt ganz schnell erledigt.
Wer kann mir ein entsprechendes Beispiel zeigen?

Danke für jede Meldung.

Gruß,

Peter

  

Betrifft: AW: Eigenes Userform von: Hajo_Zi
Geschrieben am: 08.08.2008 19:52:43

Hallo Peter,

das geht nur über UserForm, wie es auch schon im Betreff steht. Das was Du geschrieben hast ist eine MsgBox.

GrußformelHomepage


  

Betrifft: AW: Eigenes Userform von: Matthias L
Geschrieben am: 08.08.2008 20:02:23

Hallo Peter,

hier ein Beispiel

https://www.herber.de/bbs/user/54457.xls

Gruß Matthias


  

Betrifft: AW: Eigenes Userform von: Peter F.
Geschrieben am: 08.08.2008 23:11:04

Hallo Matthias,

danke für dein Beispiel. Habe sowas noch nie gemacht, aber nach 2 Std. Ausprobieren habe ich mich durchgebissen. Klappt jetzt.

Gruß Peter.


  

Betrifft: AW: Eigenes Userform von: Nepumuk
Geschrieben am: 08.08.2008 21:13:53

Hallo Peter,

ein Beispiel. Bleibt nur die Frage, ob der Aufwand zu rechtfertigen ist.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function FindWindowA Lib "user32.dll" ( _
    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 lpTimer As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long
Private Declare Function MessageBoxA Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal lpText As String, _
    ByVal lpCaption As String, _
    ByVal wType As Long) As Long
Private Declare Function SendDlgItemMessageA Lib "user32.dll" ( _
    ByVal hDlg As Long, _
    ByVal nIDDlgItem As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As String) As Long

Private Const TIMER_ID = 0
Private Const TIMER_ELAPSE = 25
Private Const WM_SETTEXT = &HC
Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
Private Const GC_CLASSNAMEMSDIALOGS = "#32770"

Private lstrButtonCaption1 As String
Private lstrButtonCaption2 As String
Private lstrButtonCaption3 As String
Private lstrBoxTitel As String

Private llngXL_hWnd As Long

Private Function MsgBoxPlus( _
        ByVal strText As String, _
        ByVal strTitle As String, _
        ByVal strButtobText1 As String, _
        Optional ByVal strButtobText2 As String, _
        Optional ByVal strButtobText3 As String, _
        Optional ByVal enmStyle As VbMsgBoxStyle) As Long

    
    Dim lngResult As Long
    
    lstrButtonCaption1 = strButtobText1
    lstrButtonCaption2 = strButtobText2
    lstrButtonCaption3 = strButtobText3
    lstrBoxTitel = strTitle
    
    llngXL_hWnd = FindWindowA(GC_CLASSNAMEMSEXCEL, Application.Caption)
    
    Call SetTimer(llngXL_hWnd, TIMER_ID, TIMER_ELAPSE, AddressOf MsgBoxPlus_TimerEvent)
    
    If strButtobText2 = "" And strButtobText3 = "" Then
        lngResult = MessageBoxA(llngXL_hWnd, strText, strTitle, enmStyle Or vbOKOnly)
    ElseIf strButtobText2 <> "" And strButtobText3 = "" Then
        lngResult = MessageBoxA(llngXL_hWnd, strText, strTitle, enmStyle Or vbYesNo)
    Else
        lngResult = MessageBoxA(llngXL_hWnd, strText, strTitle, enmStyle Or vbAbortRetryIgnore)
    End If
    
    If lngResult = 1 Or lngResult = 3 Or lngResult = 6 Then
        MsgBoxPlus = 1
    ElseIf lngResult = 4 Or lngResult = 7 Then
        MsgBoxPlus = 2
    Else
        MsgBoxPlus = 3
    End If
    
End Function

Private Sub MsgBoxPlus_TimerEvent(ByVal hWnd As Long)
    Dim lngBox_hWnd As Long
    
    Call KillTimer(llngXL_hWnd, TIMER_ID)
    
    lngBox_hWnd = FindWindowA(GC_CLASSNAMEMSDIALOGS, lstrBoxTitel)
    
    If lstrButtonCaption2 = "" And lstrButtonCaption3 = "" Then
        Call SendDlgItemMessageA(lngBox_hWnd, vbCancel, WM_SETTEXT, 0&, lstrButtonCaption1)
    ElseIf lstrButtonCaption2 <> "" And lstrButtonCaption3 = "" Then
        Call SendDlgItemMessageA(lngBox_hWnd, vbYes, WM_SETTEXT, 0&, lstrButtonCaption1)
        Call SendDlgItemMessageA(lngBox_hWnd, vbNo, WM_SETTEXT, 0&, lstrButtonCaption2)
    Else
        Call SendDlgItemMessageA(lngBox_hWnd, vbAbort, WM_SETTEXT, 0&, lstrButtonCaption1)
        Call SendDlgItemMessageA(lngBox_hWnd, vbRetry, WM_SETTEXT, 0&, lstrButtonCaption2)
        Call SendDlgItemMessageA(lngBox_hWnd, vbIgnore, WM_SETTEXT, 0&, lstrButtonCaption3)
    End If
    
End Sub

Public Sub Aufruf()
    Select Case MsgBoxPlus("Erklärung", "EntwederOder", "Entweder", "Oder", , vbCritical Or vbDefaultButton2)
        Case 1
            MsgBox "Entweder"
        Case 2
            MsgBox "Oder"
        Case 3
            MsgBox "?"
    End Select
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Eigenes Userform von: Uduuh
Geschrieben am: 08.08.2008 22:54:21

Hallo,
das sind ja wohl eher Interkontinentalraketen auf Mücken als Kanonen auf Spatzen. ;-)

Gruß aus’m Pott
Udo



  

Betrifft: AW: Eigenes Userform von: Peter F.
Geschrieben am: 08.08.2008 23:14:58

Hallo Nepumuk,

das hat mich erschlagen. Wahrscheinlich funktioniert es, aber mit meinen bescheidenen VBA-Kenntnissen trau' ich mich da nicht dran.


Gruß,

Peter


 

Beiträge aus den Excel-Beispielen zum Thema "Eigenes Userform"