Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Variable aus Inputbox / Msgbox verwenden
Michael
Hallo zusammen,
ich habe folgenden VBA Code, welcher es mir ermöglicht, markierte Zellen mit dem Faktor, den ich weiter unten angebe (Beispiel: 0,9 - fett gedruckt), multipliziere. Ich möchte den Faktor aber nicht fest hinterlegen, sondern der Benutzer soll durch eine Msgbox oder Inputbox den Faktor selbst hinterlegen können.
Wie mache ich das? Kann ich den u.g. Code entsprechend erweitern?
Sub Planungumrechnen()
Dim Zelle As Range
Dim Ausgangswert As Double
Dim Zielwert As Double
Dim ZeilenAnzahl As Integer
Dim Bereich As String
Bereich = Selection.Address
ZeilenAnzahl = Selection.Rows.Count
On Error GoTo Ausstieg_wegen_Fehler  'zusammengesetzte
' Bereiche wuerden zu einer Fehlermeldung fuehrern
For Each Zelle In Selection
Ausgangswert = Zelle.Value
Zielwert = Application.WorksheetFunction.Round _
(Ausgangswert * 0.9, 0)  'Multiplikator 0 = Rundung
Zelle.Value = Zielwert
Zelle.Interior.ColorIndex = 27
Next Zelle
Range(Bereich).Resize(1, 1).Select
Selection.Offset(ZeilenAnzahl, 0).Select
Ausstieg_wegen_Fehler:
End Sub

Danke und Grüße,
Michael

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Variable aus Inputbox / Msgbox verwenden
25.02.2010 14:31:10
David
Hallo Michael,
du musst den Multiplikator als Variable definieren.
Dim Multiplikator as Double
Dann kannst du den Wert per
Multiplikator = InputBox("Bitte den Faktor eingeben!"
abfragen. Anschließend vielleicht noch ein paar Abfragen auf Fehler, z. Bsp. dass keine Buchstaben eingeben werden etc. z. Bsp.
If Not Isnumeric(Multiplikator) then
Msgbox "Fehler
Exit sub
End If
Gruß
David
AW: Variable aus Inputbox / Msgbox verwenden
25.02.2010 14:33:44
Chris
Servus,
so z.B:
Sub Planungumrechnen()
Dim Zelle As Range
Dim Ausgangswert As Double
Dim Zielwert As Double
Dim ZeilenAnzahl As Integer
Dim Bereich As String
Dim strFaktor As String
Dim dbFaktor As Double
Bereich = Selection.Address
ZeilenAnzahl = Selection.Rows.Count
strFaktor = InputBox("Bitte Faktor eingeben!")
If StrPtr(strFaktor) = 0 Then Exit Sub
dbFaktor = strFaktor
On Error GoTo Ausstieg_wegen_Fehler  'zusammengesetzte
' Bereiche wuerden zu einer Fehlermeldung fuehrern
For Each Zelle In Selection
Ausgangswert = Zelle.Value * dbFaktor
Zielwert = Application.WorksheetFunction.Round(Ausgangswert, 0)    'Multiplikator 0 = Rundung
Zelle.Value = Zielwert
Zelle.Interior.ColorIndex = 27
Next Zelle
Range(Bereich).Resize(1, 1).Select
Selection.Offset(ZeilenAnzahl, 0).Select
Ausstieg_wegen_Fehler:
End Sub
Gruß
Chris
Anzeige
AW: Variable aus Inputbox / Msgbox verwenden
25.02.2010 14:39:27
Michael
Hallo David,
das hat super geklappt. Allerdings weiß ich noch nicht, wo ich die Fehlerabfrage einbaue (Isnumeric etc...)
So sieht der Code jetzt aus:
Sub Planungumrechnen()
Dim Zelle As Range
Dim Ausgangswert As Double
Dim Zielwert As Double
Dim ZeilenAnzahl As Integer
Dim Bereich As String
Dim Faktor As Double
Bereich = Selection.Address
ZeilenAnzahl = Selection.Rows.Count
Faktor = InputBox("Bitte den Umrechnungswert eingeben")
On Error GoTo Ausstieg_wegen_Fehler  'zusammengesetzte
' Bereiche wuerden zu einer Fehlermeldung fuehrern
For Each Zelle In Selection
Ausgangswert = Zelle.Value
Zielwert = Application.WorksheetFunction.Round _
(Ausgangswert * Faktor, 0)  'Divisor oder Multiplikator 0 = Rundung
Zelle.Value = Zielwert
Zelle.Interior.ColorIndex = 27
Next Zelle
Range(Bereich).Resize(1, 1).Select
Selection.Offset(ZeilenAnzahl, 0).Select
Ausstieg_wegen_Fehler:
End Sub

Anzeige
AW: Variable aus Inputbox / Msgbox verwenden
25.02.2010 14:50:45
David
Hallo Michael,
z. Bsp. so:
Option Explicit
Sub Planungumrechnen()
Dim Zelle As Range
Dim Ausgangswert As Double
Dim Zielwert As Double
Dim ZeilenAnzahl As Integer
Dim Bereich As String
Dim Faktor As Variant
Dim OK As Boolean
Bereich = Selection.Address
ZeilenAnzahl = Selection.Rows.Count
Do While Not OK
Faktor = InputBox("Bitte den Umrechnungswert eingeben")
If IsNumeric(Faktor) And Faktor > 0 Then
OK = True
End If
Loop
On Error GoTo Ausstieg_wegen_Fehler  'zusammengesetzte
' Bereiche wuerden zu einer Fehlermeldung fuehrern
For Each Zelle In Selection
Ausgangswert = Zelle.Value
Zielwert = Application.WorksheetFunction.Round _
(Ausgangswert * Faktor, 0)  'Divisor oder Multiplikator 0 = Rundung
Zelle.Value = Zielwert
Zelle.Interior.ColorIndex = 27
Next Zelle
Range(Bereich).Resize(1, 1).Select
Selection.Offset(ZeilenAnzahl, 0).Select
Ausstieg_wegen_Fehler:
End Sub

Die zweite Bedingung habe ich mit reingetan, um zu zeigen, dass nicht nur eine Abfrage gemacht werden kann. Ob du das brauchst, weiß ich nicht.
Ein Fehler war noch in meiner ersten Aussage: WEnn du den Faktor als Double definierst, steigt der Code bei der Prüfung IsNumeric mit einer Fehlermeldung aus. Besser ist es also, die Variable auf Variant zu setzen, dann kann erst mal alles mögliche eingegeben werden. Die Prüfung erfolgt dann ja manuell.
Gruß
David
Anzeige

191 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige