Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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
Inhaltsverzeichnis

Inputbox - Rückgabe des Wertes in Formel verwende

Inputbox - Rückgabe des Wertes in Formel verwende
16.11.2014 17:41:02
Marius
Hallo zusammen
habe hier ein Problem was mich fast zur Verzeiflung treibt:
Ich möchte in einen Zellbereich mit schleife in die Spalte daneben Formeln
eintragen lassen.
Die Formel setzt sich zusammen aus
- Bearbeitungszeit (Spalte links daneben)
- Fester Zuschlagsfaktor( ist als Zahl in der Formel hinterlegt(*2,2)
- varibaler Wert für Stundensatz (std)
Hierzu verwende ich eine Inputbox folgendermassen:

std = InputBox("Minutenfaktor?", , 0.58) 

(Datentyp double)
0,58 als defaultwert => kann sich aber ändern
Diesen wert schreibe ich in die Formel zurück:
Cells(1, clm).Offset(x, 1).Formula = "=RC[-1]* 1.1* " & std & ""

ABER: wenn jetzt die Inputbox kommt, ist der wert mit KOMMA belegt, obwohl default
das Dezimalzeichen drin ist.
Dann kommt die Fehlermeldung: Anwendungs- oder objektorientierter fehler
Wenn ich in der Inputbox das Komma überschreibe, funktioniert es
Hat jemand einen Tipp, wie entweder die Inputbox meine default eingabe übernimmt
oder der Rückgabewert umgewandelt werden kann?
Ich habe mit cdbl probiert, bin da aber nicht weiter gekommen.....
Das einzige was mir jetzt noch einfallen würde wäre den Wert aus der Inputbox in eine freie Zelle zu schreiben und dann wieder in die Formel zu integrieren, aber das geht doch sicher eleganter?
VG Marius

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

Betreff
Datum
Anwender
Anzeige
AW: Inputbox - Rückgabe des Wertes in Formel verwende
16.11.2014 17:49:52
Tino
Hallo,
vielleicht geht es so.
std = InputBox("Minutenfaktor?", , 0.58)
std = Replace(std, ",", ".")
Gruß Tino

AW: Inputbox - Rückgabe des Wertes in Formel verwende
16.11.2014 19:26:52
Marius
Hallo
die Komma Eingabe wird korrigiert, ja.
Aber, wenn man 0.58 in die Inputbox eingibt: 58
Wie kann das sein?
Hab jetzt getestet ist auch das Gleiche wenn man die Variable in die Zelle schreibt
Sonst noch Ideen?
Kann man die "falsche" Eingabe in der Inputbox schon abfangen?
Vg Marius

Vorschlag mit UF
16.11.2014 22:01:24
Matze
Hallo Marius,
wenn du nur mit der Inputbox arbeiten willst musst du deinen String "std" auf alle möglichen Fehler prüfen, das erreichst du mit Schleifen die jedesmal das Ergebnis prüfen.
Wie man da in der Inputbox Fehlereingaben vermeiden kann weis ich nicht.
Das ganze wird etwas einfacher oder übersichtlicher wenn du mit einer UserForm arbeitest die eine TextBox enthält und einen Commandbutton zum übertragen des Wertes(std)
Allerdings hab ich eine Frage, wie wird dein eigentliches Makro gestartet?
Private Sub TextBox1_Change()
With TextBox1
If Val(.Value) > 59 Then
MsgBox "Es sind max. 59 Minuten erlaubt."
.Value = ""
.SetFocus
End If
End With
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
With TextBox1
Select Case KeyAscii
Case 48 To 57
Case Else
MsgBox "Es sind nur Zahlen von 0 - 9 möglich."
KeyAscii = 0
.Value = ""
.SetFocus
Exit Sub
End Select
If Len(.Value) >= 2 Then
MsgBox "Es ist nur eine zweistellige Eingabe erlaubt."
KeyAscii = 0
.Value = ""
.SetFocus
End If
End With
End Sub
Somit dürfte alles abgedeckt sein,
Gruß Matze
Ps.: Eine Musterdatei oder deine Datei hier hochladen erleichtert uns eventuell das was du vorhast.
Ist nur ein Gedanke mit der Uform,... Ich bin nächste Woche nicht da , wird Tino oder ein anderer Helfer weitermachen.

Anzeige
AW: Inputbox - Rückgabe des Wertes in Formel verwende
16.11.2014 22:11:07
Jürgen
Hallo Marius,
ich denke, am einfachsten kommt zu einer Lösung, indem Du die Formel lokalisiert, also in Landessprache umstellst. Dazu nutzt Du die "FormulaLocal"- statt der "Formula"-Eigenschaft. Dann musst Du jedoch das Komma als Dezimaltrennzeichen verwenden (auch in dem festen Teil der Formel) und den relativen Zellbezug statt mit "RC" (für "row" und "column") mit "ZS" (für "Zeile" und "Spalte") herstellen. Aus den eckigen Klammern werden dabei runde. Also z. B. so:
Cells(1, clm).Offset(x, 1).FormulaLocal = "=ZS(-1) * 1,1 * " & std 
Gruß, Jürgen

Anzeige
versuch es mal mit Application.InputBox
17.11.2014 16:53:23
Tino
Hallo,
versuch es mal so.
Dim std As Variant
Const constVorGabe! = 0.58
std = Application.InputBox("Minutenfaktor?", , CStr(constVorGabe), Type:=1)
If VarType(std) = vbBoolean Then Exit Sub
std = Replace(CStr(std), ",", ".")
'...
Gruß Tino

AW: Inputbox - Rückgabe des Wertes in Formel verwende
17.11.2014 19:48:04
Marius
Hallo nochmal
das hier führte zum erfolg.
Cells(1, clm).Offset(x, 1).FormulaLocal = "=ZS(-1) * " & std & "*" & fee
Jetzt werden die Formeln wie gewünscht eingetragen
Das Thema mit der falschen Eingabe vernachlässige ich jetzt, da
das Komma der Inputbox ja genommen wird.
Bedanke mich recht herzlich bei euch!
VG Marius

Anzeige
AW: Inputbox - Rückgabe des Wertes in Formel verwende
17.11.2014 19:49:27
Marius
Hier noch die Datei..... Falls von Interesse
www.herber.de/bbs/user/93838.xlsm

Dein Makro ,...
18.11.2014 17:13:08
Matze
Hallo Marius,
hab deine Zeilen mal ein wenig verändert , sch au es dir bitte mal an:
Option Explicit
Sub testformel2()
Application.ScreenUpdating = False
Dim clm As Long 'letzte Spalte
Dim rw As Long 'letzte Reihe
Dim i As Long 'Schleifenzähler
Dim x As Integer 'braucht keiner
Dim std As Double 'Minutenfaktor wählbar
Dim fee As Double 'Handlingzuschlag wählbar
clm = Cells(1, Columns.Count).End(xlToLeft).Column + 1 'erste LEERE Spalte
rw = Cells(Rows.Count, 1).End(xlUp).Row 'letzte zeile in "A"
std = InputBox("Minutenfaktor", , 0.58)
fee = InputBox("Handlingzuschlag", , 1.1)
'hier kann das Offset entfallen
Cells(1, clm).Value = "Formel Berechnung" 'Trägt in Spaltenkopf die Bez. ein
For i = 2 To rw
'x = x + 1 ' 
Gruß Matze

Anzeige
AW: Dein Makro ,...
18.11.2014 20:21:02
marius
Hallo Matze
du hast es ja noch sehr schön optimiert + verschlankt funktioniert bestens
Da ich zugegebenermassen noch ziemlich am Anfang stehe
(hatte letzte Woche einen VBA "Crash" Kurs) gehe ich halt
so vor, das Gelernte anzuwenden und Schritt für Schritt zu modifizieren, da denkt man leider
gerne mehrfach ums Eck
Aber durch solche Besipiele wie deines kommen schöne AHA Effekte zustande
danke dafür
VG Marius

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige