Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1004to1008
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
abbrechen bei Inputbox
05.09.2008 14:43:00
Lars
Hallo zusammen,
ich habe bei Inputboxen folgendes Problem:
Beim anklicken der checkbox "Eingabe" erscheint ein Input Fenster. Wenn in dem Fenster keine Eingabe erfolgt und auf ok geklickt wird, soll das Fenster erneut aufgehen. Das klappt gut mit folgendem Code:

Private Sub Eingabe_click()
Frage = "bla bla"
Titel = "bla bla"
Eingabebox(Frage, Titel, var)
Range("C38") = "Eingabe: " & var
End Sub



Private Sub Eingabebox(Frage, Titel, var)
100 var = InputBox(Frage, Titel)
If var = "" Then
GoTo 100
Else
End If
End Sub


Wie kann ich jetzt erreichen, dass beim Klick auf Abbrechen die checkbox wieder auf Value=False gesetzt wird und in diesem Beispiel der text im Feld "C38" wieder gelöscht wird?
Danke für die Hilfe
Lars

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: abbrechen bei Inputbox
05.09.2008 14:59:15
Uduuh
Hallo,
um den Klick auf Abbrechen auszuwerten, musst du Application.Inputbox verwenden.

Sub tt()
Dim test
test = fncGetVar
If test = False Then
MsgBox "Abbruch"
Else
MsgBox test
End If
End Sub



Function fncGetVar()
Dim var
Do
var = Application.InputBox("test")
Loop Until var  ""
fncGetVar = var
End Function


Gruß aus’m Pott
Udo

AW: Abbrechen bei Inputbox
05.09.2008 17:56:00
Nepumuk
Hallo Udo,

um den Klick auf Abbrechen auszuwerten, musst du Application.Inputbox verwenden.


Ach ja?

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

Option Explicit

Public Sub Beispiel1()
    Dim vntInput As Variant
    Do
        vntInput = InputBox("Bitte etwas eingeben.", "Eingabe")
        If StrPtr(vntInput) = 0 Then
            MsgBox "Abbrechen geklickt"
            Exit Sub
        Else
            If Trim$(vntInput) = "" Then
                MsgBox "Nix eingegeben"
            Else
                MsgBox CStr(vntInput) & " eingegeben"
                Exit Do
            End If
        End If
    Loop
End Sub

Gruß
Nepumuk
Anzeige
OT Nepumuk
05.09.2008 19:46:00
K.Rola
Hallo Meister,
kennst du eine Möglichkeit, eine Audiodatei(WAV oder idealer Weise MP3) in eine
VB-Form zu integrieren/einzubetten?(VB 6)
Gruß K.Rola
AW: OT Nepumuk
06.09.2008 09:05:00
Nepumuk
Liebste K.Rola,
MP3-Dateien kannst du nicht direkt abspielen, sondern musst sie extrahieren und auf der Festplatte speichern um sie abzuspielen. WAV-Dateien besser geeignet, die lassen sich direkt aus der Ressource abspielen, ohne sie erst extrahieren zu müssen.
Gruß
Nepumuk
AW: OT Nepumuk
06.09.2008 13:13:00
K.Rola
Hallo Meister,
es geht nicht ums Abspielen, sondern darum, die WAV oder MP3 in die Exe einzubinden, ähnlich
wie Bilder in einer Imagelist, sodass ich bei der Weitergabe nur die Exe habe.
Gruß K.Rola
Anzeige
AW: OT Nepumuk
06.09.2008 15:03:00
Nepumuk
Liebste K.Rola,
1. Den Ressourcen-Editor starten. In der Menüleiste unter Add-Ins den Add-In-Manager aufrufen und mit einem Doppelklick den Ressourcen-Editor aktivieren (oder bei Ladeverhalten die beiden oberen Häkchen setzen).
2. In der Menüleiste unter Exras kannst du den Ressourcen-Editor starten.
3. Eine "benutzerdefinieret Ressource" hinzufügen. Einfach auf das Icon links vom Fragezeichen klicken. Den Rest mit Explorer und Doppelklick muss ich ja wohl nicht erklären.
4. Die Datei wird unter der Rubric "CUSTOM" mit der fortlaufenden Nummer 101 abgelegt.
5. Ressourcendatei über das Diskettensymbol speicheren.
Die Ressource wird in einer eigenen Ressourcendatei (.RES) gespeichert und beim kompilieren in die .EXE eingebunden. Das ist dann eine Binärdatei, welche du per Put in eine Textdatei schreibe kannst um sie aus der EXE zu extrahieren.
Beispiel:
Private Sub Command1_Click()
    Dim bytResData() As Byte
    Dim intFile As Integer
    bytResData = LoadResData(101, "Custom")
    intFile = FreeFile
    Open App.Path & "\the show must go on.mp3" For Binary Access Write As intFile
    Put intFile, , bytResData
    Close intFile
End Sub

Aber wie schon geschrieben, wenn du sie auch abspielen willst, geht das mit einer WAV-Datei viel einfacher.
Beispiel:
Option Explicit

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" ( _
    lpszSoundName As Any, _
    ByVal uFlags As Long) As Long

Private Const SND_ASYNC = &H1
Private Const SND_MEMORY = &H4
Private Const SND_NODEFAULT = &H2

Private bytResData() As Byte

Private Sub Command1_Click()
    bytResData = LoadResData(101, "CUSTOM")
    sndPlaySound bytResData(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY
End Sub

Ganz liebe Grüße
Nepumuk
Anzeige
AW: OT Nepumuk
06.09.2008 16:09:10
K.Rola
Hallo Meister,
du beweist immer wieder, dass du den Titel Meister zu Recht trägst.
Klappt hervorragend, 1000 Dank und optimales Wochenende.
Gruß K.Rola
AW: OT Nepumuk
06.09.2008 09:55:00
Tino
Hallo,
habe auch mal mit mp3 in VB6 was gemacht.
Hier der Code (aus VB6),
in Excel muss aus "App.Path", ThisWorkbook.Path oder ActiveWorkbook.Path warden.
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" (ByVal lpszCommand As String, _
  ByVal lpszReturnString As String, _
  ByVal cchReturnLength As Long, _
  ByVal hwndCallback As Long) As Long

Private Declare Function GetShortPathName Lib "kernel32" _
  Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
  ByVal lpszShortPath As String, _
  ByVal cchBuffer As Long) As Long

Dim strPfadMusik As String

Public Function MP3_Play(ByVal sFile As String, ByVal sAlias As String) As Boolean
Dim bResult As Boolean
Dim sBuffer As String
Dim lResult As Long

sBuffer = Space$(255)
lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))

  If lResult <> 0 Then
    sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
    lResult = mciSendString("open " & sFile & " type MPEGVideo alias " & sAlias, 0, 0, 0)
    If lResult = 0 Then
      If mciSendString("play " & sAlias & " from 0", 0, 0, 0) = 0 Then
        bResult = True
      End If
    End If
  End If

MP3_Play = bResult
End Function

Sub MP3_Stop(ByVal sAlias As String)
  mciSendString "stop " & sAlias, 0, 0, 0
  mciSendString "close " & sAlias, 0, 0, 0
End Sub

Sub Mach_Musik(strDatei As String)
 MP3_Play strDatei, "MyAlias"
End Sub

Private Sub Form_Load()
strPfadMusik = IIf(Right$(App.Path, 1) = "\", App.Path, App.Path & "\")
End Sub

Private Sub Command1_Click() 'start Musik 
Mach_Musik (strPfadMusik & "01 Ronan Keating - If Tomorrow Never Comes.mp3")
End Sub

Private Sub Command2_Click() 'stop Musik 
MP3_Stop "MyAlias"
End Sub


Mit dem Verpackungsassistent von VB6,
kannst du ja die MP3 mit in den Ordner Installieren lassen.
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: OT Nepumuk
06.09.2008 13:16:42
K.Rola
Hallo,
siehe meine letzte Antwort an Nepumuk.
Gruß K.Rola
AW: OT Nepumuk
06.09.2008 13:59:09
Tino
Hallo K.Rola,
verstehe was Du meinst,
aber Du kannst doch über den Assistenten die Datei mitnehmen und ins Verzeichnis installieren lassen, zudem würde die eigentliche Exe um die MP3- Größe anschwellen.
Gruß Tino
AW: OT Nepumuk
06.09.2008 15:04:37
K.Rola
Hallo,
schon klar, das will ja gerade vermeiden, die Größe der Exe ist da zweitrangig, wichtig ist
nur, dass es eine Datei, die Exe ist, die weitergereicht wird.
Ich kann ja die Töne auch zur Laufzeit erzeugen, ist mir nur zu aufwändig.
Gruß K.Rola
AW: Abbrechen bei Inputbox, Ok, OK...
05.09.2008 19:58:00
Uduuh
Hallo Max,
...ich gebe mich geschlagen.
Was hast du denn da wieder ausgegraben? In der Hilfe kann ich nichts zu StrPtr finden.
Gruß aus’m Pott
Udo

Anzeige
AW: Abbrechen bei Inputbox, Ok, OK...
05.09.2008 21:13:00
Uduuh
Hallo Gerd,
danke für den Link.
Ich glaube, ich bleibe lieber doch bei Application.Inputbox, anstatt undokumentierte Funktionen zu benutzen.
Gruß aus’m Pott
Udo

AW: Abbrechen bei Inputbox, Ok, OK...
06.09.2008 09:10:13
Nepumuk
Hi,
wieso undokumentiert?
Userbild
Du musst nur die Funktion "Verborgene Elemente anzeigen" aktivieren.
Gruß
Nepumuk
Anzeige
AW: Abbrechen bei Inputbox, Ok, OK...
06.09.2008 10:04:56
Ramses
Hallo Max
Wohl insofern undokumentiert, dass diese Funktion einen String (gemäss Objectkatalog) erwartet.
Dass "Abbrechen" aber eine nichtinitialisierte Zeichenfolge erstellt, finde ich, zumindest in der Hilfe, nicht :-)
Gruss Rainer
AW: Abbrechen bei Inputbox, Ok, OK...
06.09.2008 10:37:00
Nepumuk
Hallo Rainer,
aus der Hilfe:

Klickt der Benutzer auf Abbrechen, gibt die Funktion eine Null-Zeichenfolge ("") zurück.


Und das ein nichtinitialisierter String keine Speicheradresse hat, ist doch klar.
Aus der MSDN-Library:


StrPtr returns a pointer to the real Unicode string value.


Gruß
Max

Anzeige
AW: Abbrechen bei Inputbox, Ok, OK...
06.09.2008 10:58:59
Ramses
Hallo Max
Aus welcher Hilfe hast du das ?
*********************
Aus EXP Deutsch
Hinweise
InputBox eignet sich zur Anzeige eines einfachen Dialogfeldes, sodass Informationen eingegeben werden können, die in einem Makro verwendet werden. Ein solches Dialogfeld besitzt je eine Schaltfläche für OK und Abbrechen. Wird auf OK geklickt, gibt InputBox den Wert in das Dialogfeld eingegebenen Wert zurück. Wird auf Abbrechen geklickt, gibt InputBox den Wert "False" zurück.
********************
********************
Aus E2003 Englisch
Remarks
Use InputBox to display a simple dialog box so that you can enter information to be used in a macro. The dialog box has an OK button and a Cancel button. If you choose the OK button, InputBox returns the value entered in the dialog box. If you click the Cancel button, InputBox returns False.
********************
"...Und das ein nichtinitialisierter String keine Speicheradresse hat, ist doch klar...."
Muss man aber auch erst mal wissen Grosser Meister :-)
Gruss Rainer
Anzeige
AW: Abbrechen bei Inputbox, Ok, OK...
06.09.2008 11:40:00
Nepumuk
Hallo Rainer,
da musst du schon bei der InputBox-Funktion nachschauen. Nicht bei der InputBox-Methode.
Gruß
Max
AW: Abbrechen bei Inputbox, Ok, OK...
06.09.2008 12:00:19
Ramses
Hallo Max
Das ist aber nun schon kurios,... oder ?
DIESE Funktion kann ich ja NICHT verwenden, wenn ich z.B. explicit einen bestimmten Rückgabewert (Type:=2 entspricht Texteingabe) erwarte.
Warum da der Hinweis auf den Rückgabewert in diesem Fall (False anstelle von Null-String) dann unterschiedlich ist, erschliesst sich wohl nur den MS-Entwicklern :-)
Gruss Rainer
AW: Abbrechen bei Inputbox, Ok, OK...
05.09.2008 23:02:00
Ramses
Hallo
Das ist nicht neu,... aber absolut undokumentiert :-)
Hier die Erklärung:
Zur eindeutigen Beantwortung der Frage "Leere Eingabe oder "auf Abbrechen geklickt?" kann die undokumentierte VBA-Funktion sowie ein spezielles Verhalten von "InputBox()" nutzen: Die Funktion
StrPtr()
liefert zunächst einen Pointer (Datentyp "Long Integer") auf eine Zeichenkette, der normalerweise für die Verwendung mit API-Funktionen genutzt wird. Ist die angegebene Zeichenkette nicht initialisiert, liefert "StrPtr()" das Ergebnis "0". "InputBox()" liefert bei einem Klick auf Abbrechen nicht wirklich eine leere Zeichenkette "", sondern eine nicht initialisierte Zeichenkette als Ergebnis. Daraus resultierend kann man also eine "InputBox()"-Rückmeldung wie folgt abfragen und eindeutig feststellen, ob eine leere, mit Ok bestätigte Eingabe vorliegt oder ob auf Abbrechen geklickt wurde.
Gruss Rainer
Anzeige
Man sollte alle Beiträge lesen :-)
05.09.2008 23:04:10
Ramses
Hallo Udo
Sorry,... Erklärung scheinbar doppelt gemoppelt.
Gruss Rainer

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige