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

Deklarieren von Variablen

Deklarieren von Variablen
17.11.2004 14:18:30
Variablen
Hallo,
steh mal wieder im Wald.
Mit folgendem Code (ja, ich weiß...Anfängercode) werden Werte in Zellen geschrieben.
Eingabewerte sind zwischen 1 und 2 und können 2 Kommastellen haben z.B 1,2 oder 1,75 oder auch 1
Die Zielzellen sind als Zahl mit 2 Kommastellen formatiert. Aus diesen Werten wird weiter gerechnet (Mittelwert, Spannweite).
Ich verzweifle an der Inputbox Deklarierung. String, Variant, Long...alles ausprobiert. Mal rundet er mir die Eingabe, mal schreibt er nur 1 Nachkommastelle und die Formeln für die weitere Berechnung liefert auch keine Resultate. Was mach ich falsch.

Sub Eingabe()
If ActiveCell.Row <> 8 Then
MsgBox "Abbruch"
Exit Sub
End If
ActiveSheet.Unprotect "test"
Dim Wert1, Wert2, Wert3, Wert4, Wert5 As Single
Wert1 = InputBox("Ersten Wert eingeben", "Eingabe")
ActiveCell = Wert1
ActiveCell.Offset(1, 0).Select
Wert2 = InputBox("Zweiten Wert eingeben", "Eingabe")
ActiveCell = Wert2
ActiveCell.Offset(1, 0).Select
Wert3 = InputBox("Dritten Wert eingeben", "Eingabe")
ActiveCell = Wert3
ActiveCell.Offset(1, 0).Select
Wert4 = InputBox("Vierten Wert eingeben", "Eingabe")
ActiveCell = Wert4
ActiveCell.Offset(1, 0).Select
Wert5 = InputBox("Fünften Wert eingeben", "Eingabe")
ActiveCell = Wert5
ActiveCell.Offset(-5, 1).Select
ActiveSheet.Protect "test"
End Sub

Rückmeldung vermutlich erst morgen...gleich is Feierabend.
Gruß
Harald

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Deklarieren von Variablen
Variablen
Hallo,
Formatierungen macht die Funktion FORMAT. Schau's dir mal in der Hilfe an.
mfg
AW: Deklarieren von Variablen
17.11.2004 14:34:02
Variablen
Hallo Galenzo,
danke für die Turboantwort.
Weiß noch nicht genau, wo und wie ich das einflicken soll. Liegt aber vermutlich an meiner Motivation nach 3 erfolglosen Stunden rumgemurkse (Faxen echt dicke).
Morgen werd ich mich weiter damit beschäftigen.
Dank euch gibts aber immer wieder ein Licht am Ende des Tunnels...merci.
P.S @ Galenzo.: Deine Hilfestellung für ein Donatdiagramm (etwa 4 Wochen her)...erste Sahne. Das Ding begeistert Land und Leute.
Beste Grüße
Harald
Anzeige
AW: Deklarieren von Variablen
Variablen
Hallo Harald,
Deine Variablendimensionierung ist m.E. nicht korrekt.
Du schreibst:
Dim Wert1, Wert2, Wert3, Wert4, Wert5 As Single
Dies bedeutet, dass die Variablen Wert1 bis Wert 4 als Variant dimensioniert werden; Excel/VBA macht also damit, was es will.
Nur Wert5 ist als Single dimensioniert.
Richtig wäre m.E.:
Dim Wert1 As Single, Wert2 As Single, Wert3 As Single, Wert4 As Single, Wert5 As Single
Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
AW: Deklarieren von Variablen
18.11.2004 08:50:58
Variablen
Guten Morgen,
Galenzo, Werner ich hab eure Vorschläge nach bestem Wissen eingebaut.
Er rundet mir aber immer noch die Einträge bzw. verweigert das Weiterrechnen.
Ich hab die Datei mal beigefügt. Ich bin mir sicher, dass liegt wieder an so einer Sache, die mich nötigt, mein Level noch ne Stufe runterzusetzen :-/
https://www.herber.de/bbs/user/13602.xls
Gruß
Harald

Anzeige
AW: Deklarieren von Variablen
Variablen
Hallo Harald,
folgende Vorschläge:
1. Stelle in den Eigenschaften Deiner beiden CommandButtons die TakeFocusOnClick-Eigenschaft auf "False".
2. Lösche Dein Makro "Eingabe"
3. Ersetze Dein Makro "

Private Sub CommandButton2_Click()" durch dieses Makro:

Private Sub CommandButton2_Click()
Dim sW1 As String, sW2 As String, sW3 As String, sW4 As String, sW5 As String
If Intersect(Range("C8:H8"), ActiveCell) Is Nothing Then
MsgBox "Falsche Zelle markiert !" & vbCr & vbCr & "Makro-Abbruch !", _
vbCritical, "Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
ActiveSheet.Unprotect "tina"
sW1 = InputBox("Ersten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW1)
ActiveCell.Offset(1, 0).Select
sW2 = InputBox("Zweiten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW2)
ActiveCell.Offset(1, 0).Select
sW3 = InputBox("Dritten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW3)
ActiveCell.Offset(1, 0).Select
sW4 = InputBox("Vierten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW4)
ActiveCell.Offset(1, 0).Select
sW5 = InputBox("Fünften Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW5)
ActiveCell.Offset(-5, 1).Select
ActiveSheet.Protect "tina"
End Sub

Noch ein abschließender Hinweis: Die Rückgabe einer InputBox erfolgt immer im Format
"String" – auch wenn es Zahlen sind.
Mit "CSng(String-Variable)" kannst Du diesen String-Wert (muss natürlich numerisch
sein!) in einen Single-Wert wandeln.


Gruß
WernerB.
Anzeige
Edel...sehr edel. m.T.
18.11.2004 11:49:04
Harald
Hallo Werner,
vielen herzlichen Dank. Klappt tadellos.
Hier der Code mit 2 Zusätzen (protect nach dem Dezenten Hinweis ;-)) sowie Abfrage ob in der vorherigen Spalte für dieses Datum bereits ein Eintrag vorliegt)

Private Sub CommandButton2_Click()
Dim sW1 As String, sW2 As String, sW3 As String, sW4 As String, sW5 As String
If Intersect(Range("C8:H8"), ActiveCell) Is Nothing Then
MsgBox "Falsche Zelle markiert !" & vbCr & vbCr & "Makro-Abbruch !", _
vbCritical, "Dezenter Hinweis für " & Application.UserName & ":"
ActiveSheet.Protect "tina" 'ZUSATZ1
Exit Sub
End If
'ZUSATZ2
datum = ActiveCell.Offset(-1, -1).Value
If datum = Date Then
MsgBox "Zu diesem Datum gibt es bereits einen Eintrag !"
ActiveSheet.Protect "tina"
Exit Sub
End If
ActiveSheet.Unprotect "tina"
sW1 = InputBox("Ersten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW1)
ActiveCell.Offset(1, 0).Select
sW2 = InputBox("Zweiten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW2)
ActiveCell.Offset(1, 0).Select
sW3 = InputBox("Dritten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW3)
ActiveCell.Offset(1, 0).Select
sW4 = InputBox("Vierten Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW4)
ActiveCell.Offset(1, 0).Select
sW5 = InputBox("Fünften Wert eingeben", "Eingabe")
ActiveCell.Value = CSng(sW5)
ActiveCell.Offset(-4, 1).Select
ActiveSheet.Protect "tina"
End Sub

Nette Grüße aus dem Saarland
Harald
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige