Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
268to272
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
268to272
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Probleme mit Eingabe über InputBox

Probleme mit Eingabe über InputBox
18.06.2003 10:01:37
Michael
Hallo XL- und VBA-Spezialisten,

ich habe Probleme mit der Wertübernahme aus einer InputBox
'Zulässige Abweichung zwischend den Werten, um trotzdem als Treffer erkannt zu werden
wenn ichs direkt in den Code schreibe geht es
abweichung = 0 '0 oder 1E-16
...
If Abs(a - b) <= abweichung Then

jedoch
abweichung = "0" '0 oder 1E-16
abweichung = InputBox("Wert 0 oder 1E-16 eingeben", "Abweichung zwischend den Werten", abweichung)

ich hab auch eine Deklaration versucht
Dim abweichung As Integer 'Integer oder Single?
bringt fehler, ...merhfach benennung einer Var im Bereich oder so
was mach ich falsch?

eigentlich sollte der wert aus
abweichung = Worksheets("!Speicher!").Cells(2, 2)
ausgelesen werden - aber wenn das oben schon nicht geht...

Gibt es eigentlich eine InputBox bei der ich mehr als 1ne eingabe oder die Anzahl der Eingaben gar definieren kann?

Vielen Dank für Eure Hilfe


9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Probleme mit Eingabe über InputBox
18.06.2003 10:35:18
Andreas Walter


Zuerst
abweichung = 0 '0 oder 1E-16
...
If Abs(a - b) <= abweichung Then
Alles klar verstanden. Du willst aber abweichung eingeben. OK.

abweichung = InputBox("Wert 0 oder 1E-16 eingeben", "Abweichung zwischend den Werten", abweichung)
Auch gut

Dim abweichung As Integer 'Integer oder Single?
weder noch - DOUBLE ist richtig
Und MUSS am ANFANG des Subs stehen (vor dem abweichung angesprochen wird.)

abweichung = Worksheets("!Speicher!").Cells(2, 2)
Das muss aber auch gehen

Probier mal
msgbox Worksheets("!Speicher!").Cells(2, 2).value
muss gehen

Nein es gibt kein Inputbox mit mehr als 1 Eingabe.
Dafür gibt es Userforms

Anzeige
Re: Probleme mit Eingabe über InputBox
18.06.2003 10:39:12
Nike

Hi,
wenn du nen Zellbereich definieren möchtest,dann lieber so:

Sub test()
Dim rngAuswahl As Range
Dim rngCell As Range
On Error GoTo ErrEnde
Set rngAuswahl = Application.InputBox(prompt:="Zellauswahl", Title:="Zellauswahl", Type:=8)
For Each rngCell In rngAuswahl
MsgBox rngCell.Value
Next
Exit Sub
ErrEnde:
Err.Clear
End Sub

Gleich auch mit nem Beispiel, wie du mehrere Zellen behandeln kannst...

Bye

Nike

Re: Probleme mit Eingabe über InputBox
18.06.2003 11:21:16
Michael

Hallo Andreas,

super! vielen DAnk für deine detaillierte Hilfe!

Da ich VBA Neuling bin... such ich mir die benötigten Teile aus anderen Macros und Hilfe zusammen...was halt nicht immer zusammen passt...

Im Beispiel der Hilfe wird bei InputBox keine Var deklariert
Hab dann auch gelesen wenn Var nicht deklariert dann wird automat. (richtig?!) deklariert. Deshalb hab ichs zuerst ganz ohne Dim versucht. Weils nicht klappte dachte ich mir dass der Wert wahrscheinlich als Text übergeben wird...deshalb der Versuch mit Dim.

Warum braucht es double und nicht Integer oder Single
Trifft double für beide Zahlen 0 und 1E-16 zu?
wenn ich es nicht falsch verstanden habe (F1) war doch
Integer und Long für ganze Zahlen +/- und
Single und Double für alle Fließkomma +/- außer 0?

lt Hilfe muß ich bei InputBox
abweichung = "0" schreiben also als text oder ginge auch
abweichung = 0 ich denke daher kommt der Fehler mit der Mehrfachdeklaration

Danke und viele Grüße

Michael

Anzeige
Re: Probleme mit Eingabe über InputBox
18.06.2003 11:40:38
Michael

Hallo Nike,

vielen Dank für deine Antwort!
Ich bin mir noch nicht sicher ob wir uns richtig verstanden haben. Ich mache eine Vergleichsabfrage If Abs(a - b) <= abweichung Then bei der der Wert abweichung über die InputBox eingegeben wird. Als default Wert will ich aber keinen festen wert sondern den, der beim letzten mal benutzt wurde. Der steht in abweichung = Worksheets("!Speicher!").Cells(2, 2) und wird nach eingabe ggf. aktualisiert Worksheets("!Speicher!").Cells(2, 2) = abweichung.
sieht so aus:
abweichung = Worksheets("!Speicher!").Cells(2, 2)
abweichung = InputBox("Wert 0 oder 1E-16 eingeben", "Abweichung zwischend den Werten", abweichung)
Worksheets("!Speicher!").Cells(2, 2) = abweichung

Nach dem das nicht funktionierte hab ich foldendes versucht
abweichung = "0" '0 oder 1E-16
abweichung = InputBox("Wert 0 oder 1E-16 eingeben", "Abweichung zwischend den Werten", abweichung)
mit abweichung = 0 gings auch nicht.
wenn ich den teil mit der Inputbox auskommetiere geht das makro richtig.

Danke und viele Grüße
Michael


Anzeige
Re: Probleme mit Eingabe über InputBox
18.06.2003 11:56:20
Andreas Walter

Hier gibt es versch. Verständnisprobleme

In VBA nutzt man VARIABLEN (z.b. "abweichung") um Zwischenwerte abzuspeichern. Man kann/soll VARIABLEN mit einem DIM Befehl deklarieren. Dann sagt man ganz genau was da in der VARIABLE gespeichert wird.
DIM nachname as STRING
DIM anzahlvonspieler as INTEGER (oder LONG)
DIM gehalt as DOUBLE

STRING ist Zeichenketten
INTEGER ist von -32768 bis +32767 kann naturlich auch 0 sein
LONG ist für grosse ganze Zahlen kann naturlich auch 0 sein
DOUBLE ist für Gleitpunktzahlen (Zahlen mit ggf. etwas hinter dem Komma) kann naturlich auch 0 sein

Wenn man kein DIM Befehl schreibt, wird der Typ VARIANT benutzt.
Eine Variable mit Typ VARIANT kann irgendetwas (Text, ganze Zahlen, Fliesskommazahlen uvm.) beinhalten.
Ich nutzte NIEMALS VARIANT

abweichung ist DOUBLE (und sonst nichts)
Deklarier mit DIM abweichung als DOUBLE und dann hast Du später keine Probleme

Feerner kuck mal

OPTION EXPLICIT
nach und nutz es - es lohnt sich.

PS Ich glaube Nike hat eine richtige Antwort zu einer anderen Frage irrtumlicherweise bei Dir gepostet (Sprich - ich verstehe die Antwort auch nicht!)

Anzeige
Re: Probleme mit Eingabe über InputBox
18.06.2003 12:21:33
Michael

Klasse Andreas!!!

mit deiner Hilfe und Erklärungen bin ich wieder ein großes Stück weitergekommen.

Danke
Michael

Re: Probleme mit Eingabe über InputBox
18.06.2003 12:39:22
Nike

Hi,

zu deinem PS, ich hatte mich schon auf sein Posting bezogen ;-)

> eigentlich sollte der wert aus
> abweichung = Worksheets("!Speicher!").Cells(2, 2)

Mit meiner Antwort hätte er einen Zellbereich auswählen können.
Dein Posting hat aber auf jeden Fall besser gepaßt ;-)
Ich bin von zu viel Vorkenntnissen ausgegangen...

Bye

Nike

Re: Probleme mit Eingabe über InputBox
18.06.2003 14:53:41
Michael

Hallo Andreas,

funktioniert prima (hoffe dass ich in meinen Tests alle Eventualitäten berücksichtigt habe) hab mal mit versch eingaben und auch Datentypen experimentiert. Nicht dass ich an DOUBLE gezweifelt hätte, aber ich merks mir besser über Bsp's und nach "what will happen if.."

das Problem war die fehlende oder zu späte Deklaration
(schade dass das Bsp in der Hilfe keine hatte)
Fehler beim Kompilieren
Mehrfachdeklaration im Gültigkeitsbereich

abweichung = "0" 'hier automat als TEXT (zu diesem Ztpkt kein DIM Befehl vorhanden => wird der Typ VARIANT benutzt)
Dim abweichung As Integer 'hier als Zahl zB INTEGER => Mehrfachdeklaration
abweichung = InputBox("Wert 0 oder 1E-16 eingeben", "Abweichung zwischend den Werten", abweichung)

zu OPTION EXPLICIT:
ja, sehr sinnvoll zwingt mich zur Deklaration und somit zur Ordnung!

F1 zu:
Option explicit ' Explizite Variablendeklaration erzwingen.
Dim Var1 ' Variable deklarieren.
Ganz1 = 10 ' Nicht deklarierte Variable löst Fehler aus.
Var1 = 10 ' Deklariert, daher kein Fehler.

jedoch wurde in diesem Bsp kein Datentyp für Var1 festgelegt (zB As Integer) => wird dann Variant, ggf mit den Problemen die man mit Variant so hat - oder?


Danke und viele Grüße
Michael

Anzeige
Re: Probleme mit Eingabe über InputBox
18.06.2003 14:57:29
Michael

Hallo Nike,

sorry ich konnte dir nicht folgen und war mir somit nicht sicher ob wir uns richtig verstanden haben. Werde jetzt (nach deiner Bestätigung) mal versuchen deinen Code zu verstehen.

Nachmals Danke

Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige