Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable aus Inputbox / Msgbox verwenden

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
Anzeige

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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Verwendung von Variablen in MsgBox und InputBox in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Variable in einer MsgBox oder InputBox in Excel VBA zu verwenden, befolge diese Schritte:

  1. Definiere die Variablen: Lege am Anfang deines Codes die benötigten Variablen fest, z.B. für Eingabewerte.

    Dim Faktor As Variant
  2. Eingabeaufforderung erstellen: Nutze die InputBox, um den Benutzer nach dem gewünschten Faktor zu fragen.

    Faktor = InputBox("Bitte den Umrechnungswert eingeben")
  3. Fehlerüberprüfung einbauen: Stelle sicher, dass die Eingabe gültig ist. Du kannst dies mit IsNumeric überprüfen.

    If Not IsNumeric(Faktor) Then
       MsgBox "Bitte eine gültige Zahl eingeben."
       Exit Sub
    End If
  4. Verwenden der Variable in Berechnungen: Nutze die Variable in deinen Berechnungen.

    Zielwert = Application.WorksheetFunction.Round(Ausgangswert * Faktor, 0)
  5. Fertigstellen des Codes: Schließe deine Schleifen und Fehlerbehandlungen ab.


Häufige Fehler und Lösungen

  • Fehler: Ungültige Eingabe:

    • Lösung: Verwende IsNumeric, um sicherzustellen, dass nur Zahlen eingegeben werden.
  • Fehler: Variable nicht definiert:

    • Lösung: Stelle sicher, dass du alle Variablen mit Dim korrekt deklarierst.
  • Fehler: Division durch Null:

    • Lösung: Überprüfe, ob der eingegebene Faktor nicht null ist, bevor du Berechnungen durchführst.

Alternative Methoden

Anstelle der InputBox kannst du auch eine UserForm verwenden, um die Eingabe zu gestalten. Damit hast du mehr Kontrolle über die Benutzeroberfläche und kannst weitere Eingabefelder hinzufügen.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das zeigt, wie du eine Variable in einer MsgBox verwenden kannst:

Sub Planungumrechnen()
    Dim Zelle As Range
    Dim Ausgangswert As Double
    Dim Zielwert As Double
    Dim Bereich As String
    Dim Faktor As Variant
    Dim OK As Boolean

    Bereich = Selection.Address

    Do While Not OK
        Faktor = InputBox("Bitte den Umrechnungswert eingeben")
        If IsNumeric(Faktor) And Faktor > 0 Then
            OK = True
        Else
            MsgBox "Bitte eine gültige Zahl größer als 0 eingeben."
        End If
    Loop

    On Error GoTo Ausstieg_wegen_Fehler

    For Each Zelle In Selection
        Ausgangswert = Zelle.Value
        Zielwert = Application.WorksheetFunction.Round(Ausgangswert * Faktor, 0)
        Zelle.Value = Zielwert
        Zelle.Interior.ColorIndex = 27
    Next Zelle

Ausstieg_wegen_Fehler:
End Sub

Tipps für Profis

  • Verwende Option Explicit: Dadurch wird sichergestellt, dass alle Variablen deklariert sind, was Fehler reduziert.
  • Fehlerbehandlung verbessern: Implementiere eine umfassendere Fehlerbehandlung, um unerwartete Fehler zu vermeiden.
  • Verwendung von MsgBox: Um den Benutzer über den erfolgreichen Abschluss der Operation zu informieren, kannst du eine MsgBox am Ende des Codes hinzufügen:
    MsgBox "Die Umrechnung wurde erfolgreich durchgeführt."

FAQ: Häufige Fragen

1. Wie kann ich eine MsgBox mit mehreren Variablen verwenden?
Du kannst mehrere Variablen in einer MsgBox kombinieren, indem du sie in einem String zusammenfügst:

MsgBox "Der Ausgangswert war " & Ausgangswert & " und der Zielwert ist " & Zielwert

2. Kann ich die MsgBox anpassen?
Ja, du kannst verschiedene Schaltflächen und Icons verwenden. Zum Beispiel:

MsgBox "Bitte beachten!", vbExclamation, "Warnung"

3. Wie kann ich den eingegebenen Faktor speichern?
Wenn du den Faktor für spätere Berechnungen speichern möchtest, kannst du ihn in einer globalen Variablen speichern oder in eine Zelle im Arbeitsblatt schreiben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige