Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
848to852
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
848to852
848to852
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variablendefinitionsproblem

Variablendefinitionsproblem
22.02.2007 15:51:00
Jan
Hallo wertes Forum!
Bei Verwendung einer User-Form hab ich ein Problem, wenn fuer den Saldo "0" eingegeben wird, denn dann geht mein Makro davon aus, es wurde Abbruch (Saldo = False) gewaehlt :
Makroauszug:
Dim Saldo As Variant
...
Saldo = Application.InputBox("Digita Saldo Inizio : ", "Scelta Saldo")
'Pruefung Eingabe Saldo
If Saldo = "" Then
MsgBox "Saldo non digitato, azione viene interrotta!"
End If
If Saldo = False Then
MsgBox "Azione é annullata!"
End If
If Saldo = "" Or Saldo = False Then Exit Sub
Definiere ich den Saldo statt "Variant" als "Currency" verursacht die Abfrage
If Saldo = "" Then
einen Bug. So gehts leider also auch nicht.
Welchen Variablentyp muss ich fuer Saldo definieren oder wie muss ich die If-Bedingung formulieren, so dass es mgl. ist, in die User-Form auch "0" eingeben zu koennen?
Danke schonmal fuer alle Denkanstoesse, euer Interesse und Muehen!
Gruss,
Jan

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablendefinitionsproblem
22.02.2007 16:09:00
Rudi
Hallo,
bei application.inputbox kannst du den Typ der Eingabe mitgeben.

Sub tt()
Dim Saldo As Single
Saldo = Application.InputBox("Saldo?", "Eingabe", Type:=1)
MsgBox Saldo
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Variablendefinitionsproblem
22.02.2007 16:23:51
Jan
Hallo Rudi,
auch der Variablentyp Single verursacht einen Bug in der Zeile:
If Saldo = "" Then
auch wenn ich bei application.inputbox den Typ der Eingabe :
Saldo = Application.InputBox("Saldo?", "Eingabe", Type:=1)
mitgebe. WAs genau heisst das eigentlich, "Typ der Eingabe mitgeben"?
Folgendes moechte ich schon gerne beibehalten :
'Pruefung Eingabe Saldo
If Saldo = "" Then ' = wenn Eingabe vergessen wurde, wird das Makro abgebrochen !
MsgBox "Saldo non digitato, azione viene interrotta!"
End If
If Saldo = False Then
MsgBox "Azione é annullata!"
End If
If Saldo = "" Or Saldo = False Then Exit Sub
Gruss und Dank, dass du dich wieder meiner annimmst:-)
Jan
Anzeige
AW: Variablendefinitionsproblem
22.02.2007 16:46:21
Rudi
Hallo,
du willst also unterscheiden, ob nicht eingegeben und auf OK geklickt wurde oder Abbrechen angeklickt wurde?
Das wirst du nur über eine Userform hinbekommen. Da kannst du die Klick-Ereignisse der Buttons ausnutzen.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Variablendefinitionsproblem
22.02.2007 17:01:00
Jan
Genau und in beiden Faellen unterbricht das Makro.
Zur besseren Verstaendlichkeit :
'Pruefung Eingabe in Inputbox Saldo
If Saldo = "" Then
MsgBox "Saldo nicht angegeben, Aktion wird abgebrochen!"
End If
If Saldo = False Then
MsgBox "Aktion wurde durch den Anwender abgebrochen!"
End If
If Saldo = "" Or Saldo = False Then Exit Sub ' dieses Exit Sub unterbricht das Makro bei fehlender Eingabe und bei Inputboxwahl "Abbruch"
Das ganze funktioniert prima in allen Faellen (Texteingabe, Zahleneingabe) nur eben nicht fuer die vermalledeite ZAhleneingabe null....
Gruss,
Jan
Anzeige
AW: Variablendefinitionsproblem
22.02.2007 16:51:00
Jan
Hallo,
habe mittlerweile herausgefunden, dass Type:=1 nichts weiter bedeutet, als dass hier die Eingabe mittels Inputbox als Zahl definiert wird.
Ich denke also das Problem liegt in der Abfrage:
If Saldo = ""
das "" bedeutet "kein Text" ?
Die Frage ist also wie lautet der Platzhalter fuer "keine Zahl" um diese If-Abfrage richtig zu formulieren?
Danke und Gruss,
Jan
AW: Variablendefinitionsproblem
22.02.2007 16:56:10
Peter
Hallo Jan,
da Null und Abbruch offensichtlich identisch sind, würde ich anstelle der InputBox ein UserForm creieren, da bist du Herr der Dinge.
Gruß Peter
AW: Variablendefinitionsproblem
22.02.2007 17:04:49
Jan
Hallo Peter,
da ich aber dachte es liegt einfach nur am Platzhalter "" der mir die Probleme bereitet, hoffte ich es mit der Inputbox auch loesen zu koennen.
UserForm hab ich zwar im ersten Posting faelschlicherweise genannt, wollte ich aber umgehen, da ich mich damit erst genauer beschaeftigen muesste und es nicht mehr so einfach aus dem Aermel schuetteln kann...:-(
Gruss,
Jan
Anzeige
AW: Variablendefinitionsproblem
22.02.2007 17:33:00
Jan
Hallo Peter,
da ich auch gerade ne UserForm gebastelt hab, vielen Dank fuer dein file! Super!
Schau gleich mal ob mir der Code weiterhilft...
Gruss,
Jan
AW: Variablendefinitionsproblem
22.02.2007 17:50:00
Peter
Hallo Jan,
ich habe mein bestes Italienisch hervorgekramt und die Bezeichnungen noch ein wenig verbessert.
Die TextBox (der Saldo) kann nur numerisch, mit EINEM Komma eingegeben werden.
Hier in dem Muster, wird der Saldo im aufrufenden Tabellenblatt in Zelle D3 zur Demonstation angezeigt.
Der Saldo steht aber auch in einer Public Variablen Saldo zur Verfügung.
Die ist im Standard Modul1 definiert.
Gruß Peter
https://www.herber.de/bbs/user/40628.xls
Anzeige
AW: Variablendefinitionsproblem
22.02.2007 18:10:37
Jan
Ojojojojojjjiiiii, was ist denn das da alles?
Da ich nicht dumm sterben will und vor allem erst wissen will was fuer Makros ich hier auf der Arbeit so laufen lasse... was verbirgt sich denn dahinter :-) :

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox1) = 0 Then
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
ElseIf InStr(1, TextBox1, ",") = 0 Then
Select Case KeyAscii
Case 44, 48 To 57
Case Else
KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End If
End Sub

Wo ist der unterschied in den beiden files zu finden?
Erstaunte Gruesse,
Jan
Anzeige
AW: Variablendefinitionsproblem
22.02.2007 21:05:00
Peter
Hallo Jan,
bis auf das 'bessere' Italienisch, gibt es da keine Unterschiede.
Beim Klick auf den Übernahme-Button wird die TextBox geprüft und der Saldo in die Variable eingestellt.
Das TextBox1_KeyPress sorgt dafür, dass nichts unerlaubtes in die TextBox eingetragen wird.
Nur Ziffern und ein Komma werden akzeptiert.
Gruß Peter
AW: Variablendefinitionsproblem
23.02.2007 21:35:01
Jan
Hallo Peter
Zunaechst mal vielen Dank fuer deine Unterstuetzung!
Allerdings werd ich auf die Loesung von Erich G. zurueckgreifen, die mir gestattet auf die UserForm doch zu verzichten.
UserForm find ich prinzipiell zwar auch geil, nun muss aber eine schnelle Lsg. her...
Danke und beste Gruesse,
Jan
Anzeige
AW: Reihenfolgeproblem?
22.02.2007 17:17:24
Erich
Hallo Jan,
probier mal
Sub tst()
Dim Saldo As Variant
Saldo = Application.InputBox("Digita Saldo Inizio : ", "Scelta Saldo")
'Pruefung Eingabe Saldo
If Saldo = False Then
MsgBox "Azione é annullata!"
Exit Sub
ElseIf Saldo = "" Then
MsgBox "Saldo non digitato, azione viene interrotta!"
Exit Sub
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Reihenfolgeproblem?- Glaube nein...
22.02.2007 17:30:54
Jan
Hallo Erich,
scheinbar leider nein, scheint kein Reihenfolgenprob zu sein, zumindest lief dein Vorschlag bei mir gerade nicht.
Wie Peter schon schrieb, es ist wohl so, dass in der Inputbox die null wie ein Abbruch behandelt wird.
Bloed das.
Dank dir trotzdem:-)
Gruss,
Jan
Anzeige
AW: Reihenfolgeproblem?- Glaube nein...
22.02.2007 18:28:21
Erich
Hallo Jan,
ja, stimmt leider.
Aber es könnte doch mit Application.InputBox gehen. Teste mal
Sub tst()
Dim Saldo As Variant
Saldo = Application.InputBox("Digita Saldo Inizio : ", "Scelta Saldo", , , , , , 1)
'Pruefung Eingabe Saldo
'   MsgBox VarType(Saldo)
Select Case VarType(Saldo)
Case vbBoolean:   MsgBox "Azione é annullata!":    Exit Sub
Case vbEmpty:     MsgBox "Saldo non digitato, azione viene interrotta!": Exit Sub
Case vbDouble
If Saldo = 0 Then
MsgBox "0 wurde eingegeben": Exit Sub 'falls auch bei 0 abgebrochen werden soll
Else
MsgBox Saldo & " eingegeben"
End If
End Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Reihenfolgeproblem?- Glaube nein...
23.02.2007 21:22:50
Jan
Hallo Erich,
tut mir leid, dass ich mich erst jetzt melde. Bin mittlerweile im WE aber wie's halt so ist, Excel laesst einem auch in der Freizeit nicht los...;-).
Deine Loesung ist klasse, allerdings kommt bei fehlender Eingabe statt der MSG-Box eine automatische Fehlermeldung von Excel ("Die Formel enthaelt einen Fehler"). Das Makro wird aber nicht abgebrochen, so dass der Anwender dann nochmal die Moeglichkeit erhaelt entweder einen Wert einzugeben oder abzubrechen.
Letztlich ist das ganz aehnlich dem was ich brauche und werde es so in mein Makro einbauen.
Haette mich ehrlich gesagt gewundert, wenn ich hier nur mit UserForm weitergekommen waere, was die viel aufwendiger Loesung gewesen waere.
Vielen Dank!
Beste Gruesse,
Jan
Anzeige
AW: Reihenfolgeproblem?- Glaube nein...
26.02.2007 10:24:00
Jan
Hallo Leute,
so ist das halt, wenn man in der Freizeit, im Halbschlaf, anfaengt ueber die Arbeit nach zu denken...
das Prob war ja die Eingabe "null" und hier funzt die Lsg. von Erich doch wieder nicht, leider. Die "0" wird nach wie vor, wie Peter bereits schrieb, wie ein Abbruch behandelt.
Also gilt es fuer mich doch, sich an die UserForm ranzumachen....
Wenn jemand noch eine Idee fuer die InputBox hat, waere ich sehr dankbar!
Vielen Dank!
Gruesse,
Jan
AW: Reihenfolgeproblem?- Glaube nein...
26.02.2007 10:32:11
Erich
Hallo Jan,
dann lass doch bei der 0 das Exit weg!
Empty und nichtnumerisch wird von VBA abgefangen.

Sub tst()
Dim Saldo As Variant
Saldo = Application.InputBox("Digita Saldo Inizio : ", "Scelta Saldo", , , , , , 1)
'Pruefung Eingabe Saldo
'   MsgBox VarType(Saldo)
Select Case VarType(Saldo)
Case vbBoolean:   MsgBox "Azione é annullata!":    Exit Sub
'   Case vbEmpty:     MsgBox "Saldo non digitato, azione viene interrotta!": Exit Sub
Case vbDouble
MsgBox Saldo & " eingegeben"
End Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Reihenfolgeproblem?- Glaube nein...
26.02.2007 10:42:20
Jan
Hallo Erich,
ha ich ja:
Saldo = Application.InputBox("Digita Saldo Inizio : ", "Scelta Saldo", , , , , , 1)
'Pruefung Eingabe Saldo
Select Case VarType(Saldo)
Case vbBoolean: MsgBox "Azione é annullata!": Exit Sub
Case vbEmpty: MsgBox "Saldo non digitato, azione viene interrotta!": Exit Sub
Case vbDouble
If Saldo = 0 Then
MsgBox "0 wurde eingegeben" ': Exit Sub falls auch bei 0 abgebrochen werden soll
Else
MsgBox Saldo & " eingegeben"
End If
End Select
If Saldo = "" Or Saldo = False Then Exit Sub ' Diese Zeile fuehrt zum Abbruch da folgende, letzte Zeile nicht mehr ausgefuehrt wird :
MsgBox "Banca scelta : " & Banca & Chr(13) & Chr(13) & "Saldo Inizio : " & Saldo & Chr(13) & Chr(13) & "Data Inizio : " & Data
Gruesse,
Jan
AW: Reihenfolgeproblem?- Glaube nein...
26.02.2007 10:50:48
Erich
Hallo Jan,
die Zeile unten, die zum Abbruch führt, hättest du einfach weglassen können...
Probier mal die einfachere Variante

Sub tst()
Dim Saldo As Variant, Banca As String, Data As Date
Banca = "Abc"
Data = Date
Saldo = Application.InputBox("Digita Saldo Inizio : ", "Scelta Saldo", , , , , , 1)
'Pruefung Eingabe Saldo
If VarType(Saldo) = vbBoolean Then MsgBox "Azione é annullata!": Exit Sub
MsgBox "Banca scelta : " & Banca & Chr(13) & Chr(13) & "Saldo Inizio : " & Saldo & Chr(13) _
& Chr(13) & "Data Inizio : " & Data
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Geschafft :-), erledigt. m.w.T.
26.02.2007 11:27:00
Jan
Super Erich!
Es klappt und siehe da! Fuer das urspruengliche, von dem ich dachte einfache Prob mit einfacher Lsg. gibt es denn doch eine einfache Antwort....! Klasse!
Vielen Dank dafuer und fuer deine Geduld und Unterstuetzung!
Froehliche Gruesse,
Jan
Danke für Rückmeldung - freut mich! (oT)
26.02.2007 11:29:56
Erich

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige