Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Alternative Eingaben über InputBox

Betrifft: Alternative Eingaben über InputBox von: KlausF
Geschrieben am: 22.06.2008 12:30:35

Hallo Excellenzen!

Habe in einer Riesentabelle die automatische Durchrechnung ausgeschaltet.
Bevor die Sheets per Button manuell durchgerechnet werden, prüfe ich, ob die unbedingt notwendigen Eintragungen vorgenommen wurden = 5Zellen mit wichtigen Parametern. Sind diese Zellen leer, soll der Nutzer mittels Inputbox zur Eingabe aufgefordert werden. So weit habe ich das Makro zusammen.

Aber:
Bei einem Parametern gibt es eine alternative Eingabemöglichkeit:
Der Nutzer soll entweder die maximale Korngröße in G10 oder die Korngröße bei 80%-igem Durchgang in G12 eingegeben haben (trägt er doch beides ein, wird letzteres weiter verwendet).

Frage:
Wie kann ich diese alternative Eingabe mittels InputBox lösen?

Grüße
Klaus

  

Betrifft: AW: Alternative Eingaben über InputBox von: Reinhard
Geschrieben am: 22.06.2008 12:52:25

Hi Klaus,

probiers mal so:

Korn = Range("G12")
If Range("G10") = "" And Range("G12") = "" Then
   Korn=inputBox(...)
   If Korn = "" Then Exit Sub
ElseIf Korn = "" Then
   Korn = Range("G10")
End If


Gruß
Reinhard


  

Betrifft: AW: Alternative Eingaben über InputBox von: KlausF
Geschrieben am: 22.06.2008 13:45:40

Hallo Reinhard,

erst mal Danke für Deine Mühe!
Aber hier fehlt irgendwie eine zweite Inputbox.

Sind G10 und G12 beide leer, soll er entweder zu G10 oder zu G12 etwas eingeben- ansonsten Ende Sub.

Mein Versuch, das "If Korn = "" Then Exit Sub" rauszunehmen und "Korn = Range("G10")" durch eine zweite Inputbox zu ersetzen führen leider nicht zum Erfolg ;-(

Fällt Dir dazu was besseres ein?


  

Betrifft: Sorry, mir unklar, Frage noch offen o.w.T. von: Reinhard
Geschrieben am: 22.06.2008 14:33:12




  

Betrifft: AW: Sorry, mir unklar, Frage noch offen o.w.T. von: fcs
Geschrieben am: 22.06.2008 14:41:16

Hallo Klaus,

hier ein Vorschlag wie die die beiden Zellen prüfen und vie Input-Boxen die Eingabe der Werte steuern kannst. Dabei muss wenn beide Zellen leer sind zunächst die auszufüllende Zelle gewählt werden.
Ich hab den Ablauf so eingestellt, dass die Eingabe bei Klick auf Abbrechen wiederholt werden muss. Dies muss du ggf. ändern.

Gruß
Franz

Sub aatt()

  Dim varEingabe
  
    If IsEmpty(Range("G10")) And IsEmpty(Range("G12")) Then
    'Beide nicht ausgefüllt
Eingabe01:
    varEingabe = Application.InputBox(Prompt:="Eingabe in G10 oder G12 isterforderlich!" _
      & vbLf & "Was wollen Sie eingeben?" & vbLf _
      & "1 = maximale Korngröße in G10" & vbLf _
      & "2 = Korngröße bei 80% Durchgang in G12", _
      Title:="Kontrolle Eingabewerte", _
      Default:=2, Type:=1)
    Select Case varEingabe
      Case 1
Eingabe02:
      varEingabe = Application.InputBox(Prompt:="maximale Korngröße (mikrometer) in G10:", _
      Title:="Kontrolle Eingabewerte", Default:=250, Type:=1)
      If varEingabe > 0 Then
        Range("G10").Value = varEingabe
      Else
        MsgBox "Unzulässige Eingabe, Abbrechen nicht zulässig. Bitte wiederholen!"
        GoTo Eingabe02
      End If
      Case 2
Eingabe03:
      varEingabe = Application.InputBox( _
      Prompt:="Korngröße bei 80% Durchgang (mikrometer) in G12:", _
      Title:="Kontrolle Eingabewerte", Default:=250, Type:=1)
      If varEingabe > 0 Then
        Range("G12").Value = varEingabe
      Else
        MsgBox "Unzulässige Eingabe, Abbrechen nicht zulässig. Bitte wiederholen!"
        GoTo Eingabe03
      End If
      Case 0
        'Eingabe wurde abgebrochen
        MsgBox "Abbrechen der Eingabe nicht zulässig!"
        GoTo Eingabe01
      Case Else
        MsgBox " Falsche Eingabe für Auswahl!"
        GoTo Eingabe01
    End Select
      
  ElseIf Not (IsEmpty(Range("G10")) Or IsEmpty(Range("G12"))) Then
    'beide Zellen ausgefüllt
Eingabe04:
    varEingabe = Application.InputBox(Prompt:="Nur eine der Zellen G10 oder G12 darf ausgefüllt  _
sein!" & vbLf _
      & "Welchen Wert wollen Sie verwenden?" & vbLf _
      & "1 = maximale Korngröße in G10:               " & Range("G10").Value & vbLf _
      & "2 = Korngröße bei 80% Durchgang in G12:  " & Range("G12").Value, _
      Title:="Kontrolle Eingabewerte", _
      Default:=2, Type:=1)
    Select Case varEingabe
      Case 1
        Range("G12").ClearContents
      Case 2
        Range("G10").ClearContents
      Case 0
        'Eingabe wurde abgebrochen
        MsgBox "Abbrechen der Eingabe nicht zulässig!"
        GoTo Eingabe04
      Case Else
        MsgBox " Falsche Eingabe für Auswahl"
        GoTo Eingabe04
    End Select
  End If
  
End Sub




  

Betrifft: AW: Vieleicht so?? von: hary
Geschrieben am: 22.06.2008 15:51:07

Hallo Klaus
Versuchs mal so. Vieleicht ist es so in etwa.


Dim Korn, Korn2 As Variant
Sub kornRe()
    Korn = InputBox("eingabe")
    Range("G10") = Korn
    If Range("G12") = "" Then
    Korn2 = InputBox("Eingabe2")
    Range("G12") = Korn2
 If Korn2 = "" Then Exit Sub
  End If
End Sub


Gruss Hary


  

Betrifft: AW: Alternative Eingaben über InputBox von: Gerd L
Geschrieben am: 22.06.2008 14:40:26

Hallo Klaus,

hast Du eine Brennerei ? :-)

Sub Alternativer_Wert()
Dim Körner As Variant

Do While Len(Range("G10")) * Len(Range("G12")) = 0 And Körner = Empty
    
    Körner = InputBox("Körner oder Quote eingeben")
    
    If StrPtr(Körner) = 0 Then Exit Do 'bei Abbrechen
    
    If MsgBox("Ist Wert Quote?", vbYesNo) = vbYes Then
        Range("G12") = Körner
    Else
        Range("G10") = Körner
    End If

Loop

If Körner= "" then Exit Sub

End Sub



Gruß Gerd


  

Betrifft: @Franz und Gerd: von: KlausF
Geschrieben am: 22.06.2008 15:42:16

Hallo, Ihr beiden!
Danke für die viele Mühe!!!


Beim Vorschlag von Franz hab ich den Teil 4 (beides ist ausgefüllt) gekillt (und damit auch paar Fehlermeldungen): funzt.
Der Vorschlag dient mir in Zukunft für Eigenentwicklungen zum "Eingabemanagement" (bis ich mal UF beherrsche).

Ich bevorzuge aber trotzdem den Vorschlag von Gerd - wegen der Kürze.
(Gerd: Ich habe leider keine Brennerei - das Thema gehört zu Baustoffmahlanlagen)

Nur ein kleines Prob habe ich nun neu:
Nach diesen Kontrollen und Eingaben folgt die Veranlassung der Durchrechnung.
Worksheets("Mühlen").Calculate
Und da meckert jetzt Excel: "Laufzeitfehler 9 : Index außerhalb des gültigen Bereiches"
Bisher gings. Woran kann das nun liegen?

Bit besten Dank an Euch beide
Klaus


  

Betrifft: AW: @Franz und Gerd: von: Reinhard
Geschrieben am: 22.06.2008 15:54:55

Hi Klaus,

überprüfe die exakte Schreibweise von Mühlen.

Gruß
Reinhard


  

Betrifft: AW: @Franz und Gerd: von: fcs
Geschrieben am: 22.06.2008 15:58:10

Hallo Klaus,

die Info läßt uns leider im Nebel stochern. Bei welcher Anweisung in einer Prozedur tritt denn der Fehler auf?

Ursache sind typischer Weise Zählerüberlauf bei Array-Variablen oder Probleme bei fehlenden Blattnamen/Dateinamen.

Manchmal kann auch die Übergabe von Zahlen als Text sein, wo Excel eine richtige Zahl erwartet. Kann passieren, wenn man Zahlen via Textboxen/Inputboxen eingibt.

Wir brauchen mehr Infos.

Gruß
Franz


  

Betrifft: OT nachfrage von: Reinhard
Geschrieben am: 22.06.2008 18:27:00

Hallo Franz,

die Fehlermeldung:

Laufzeitfehler 9 : Index außerhalb des gültigen Bereiches

kommt m.E. nur dann wenn es ein Objekt oder wie immer man das korrekt benennt nicht gibt.

Falscher Blattname ist klar, auch wenn ich in einem 100 Einträge großen Array den Wert von arrDaten(123) haben will ist auch kar daß dann dieser Fehler kommt.

Was ich nicht verstanden habe ist dieses:

******************************************************************
Manchmal kann auch die Übergabe von Zahlen als Text sein, wo Excel eine richtige Zahl erwartet. Kann
passieren, wenn man Zahlen via Textboxen/Inputboxen eingibt.
******************************************************************

Kommt denn da nicht die Fehlermeldung "Falscher Typ" o.ä.?

Danke ^ Gruß
Reinhard


  

Betrifft: AW: OT nachfrage von: fcs
Geschrieben am: 23.06.2008 00:42:57

Hallo Reinhard,

an einen falsch geschriebenen Blattnamen hatte ich bei Klaus's Problem ja garnicht gedacht.

Manchmal sind es ja nur Kleinigkeiten, die einen scheinbar zur Verzweiflung bringen können, weil man bei der Deklaration von Variablen bzw. der Dateneingabe ein wenig großzügig war.

Lege z.B. in einer Arbeitsmappe ein Blatt mit dem Namen 12 an.

Makro aaaTest reagiert ggf. mit Fehlermeldung. Die anderen beiden funktionieren.

Gruß
Franz

Sub aaaTest()
  Dim Blattname
  Blattname = 12
  Worksheets(Blattname).Select
End Sub

Sub bbbTest()
  Dim Blattname
  Blattname = "12"
  Worksheets(Blattname).Select
End Sub

Sub cccTest()
  Dim Blattname As String
  Blattname = 12
  Worksheets(Blattname).Select
End Sub




  

Betrifft: AW: @Franz und Reinhard: von: KlausF
Geschrieben am: 22.06.2008 16:15:57

Hallo Ihr beiden!

Reinhard hat den Nagel getroffen: Ich Depp hab' ein Leerzeichen vor dem Blattnamen eingetippt.
Also jetzt alles in Butter!

Franz: Und da ich inzwischen "weitergestrickt" habe, bin ich wieder zu Deinem Code in abgewandelter Form "zurückgekehrt" - später Triumph ;-)))

Danke Euch allen!
Und einen schönen Sonntag noch!

Klaus


 

Beiträge aus den Excel-Beispielen zum Thema "Alternative Eingaben über InputBox"