Microsoft Excel

Herbers Excel/VBA-Archiv

Variable Eingabemeldung

Betrifft: Variable Eingabemeldung von: Manuel
Geschrieben am: 15.10.2014 15:41:56

Hallo an alle,

schon seit mehreren Tage ärgere ich mich immer wieder mit dem selben Problem. Ich bin mir sicher es fehlt nicht mehr viel zur Lösung.

Vereinfachte Problematik:

Ich möchte eine mit VBA eine variable Eingabemeldung (Daten->Datenprüfung->Eingabemeldung)erzeugen.

Wenn Zelle B1 ausgewählt dann,
Wenn Zelle A1 = 555, dann soll die Eingabemeldung "Hallo" in Zelle B1 erscheinen.
Wenn Zelle A1 = 554, dann soll die Eingabemeldung "Okay" in Zelle B1 erscheinen.

Hier mein bisheriger Ansatz:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub
 With Target.Validation
     .Delete
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop,Operator:=xlBetween
     .IgnoreBlank = True
     .InCellDropdown = True
     .InputTitle = "Eingabe:"
     .ErrorTitle = ""
     .InputMessage = "Hallo"
     .ErrorMessage = ""
     .ShowInput = True
     .ShowError = True
 End With
End Sub


Damit gelingt es mir eine Eingabemeldung bei Zellauswahl anzeigen zu lassen. Ich schaff es jedoch nicht die die oberhalb beschriebenen Bedingungen einzubeziehen.

Vielen Dank schon mal.

Gruß Manuel

  

Betrifft: AW: Variable Eingabemeldung von: Matthias L
Geschrieben am: 15.10.2014 15:54:49

Hallo

evtl so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Ausgabe$
Select Case Cells(1, 1)
Case Is = 555
Ausgabe = "Hallo"
Case Is = 554
Ausgabe = "ok"
End Select
If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub
 
 With Target.Validation
     .Delete
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
     .IgnoreBlank = True
     .InCellDropdown = True
     .InputTitle = "Eingabe:"
     .ErrorTitle = ""
     .InputMessage = Ausgabe
     .ErrorMessage = ""
     .ShowInput = True
     .ShowError = True
 End With
End Sub
Gruß Matthias


  

Betrifft: AW: Variable Eingabemeldung von: Manuel
Geschrieben am: 15.10.2014 16:05:13

Hi Matthias,

vielen Dank für die unglaublich schnelle Antwort.
Das löst mein Problem, genau wie ich es mir vorgestellt habe.

Danke nochmal.

Gruß Manuel


  

Betrifft: AW: Variable Eingabemeldung von: Manuel
Geschrieben am: 16.10.2014 07:51:12

Hallo zusammen,

ich muss den Beitrag von gestern heute doch noch einmal aufgreifen.
Da ich die Problematik etwas erweitern musste. Ich jedoch nicht weiß warum es so (siehe unterhalb) nicht funktioniert. Lediglich der erste Absatz des Codes funktioniert (wie von Matthias beschrieben).

Könnte mir zum einen jemand erklären, warum es nicht funktioniert und wie das Problem zu lösen ist?

Vielen Dank im Voraus!


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
'
Dim Ausgabe$
Select Case Cells(3, 2)
Case Is = "540.20 RF"
Ausgabe = "min. 0,420 m"
Case Is = "540.20 KF"
Ausgabe = "min. 0,520 m"
Case Is = "540.31 KF"
Ausgabe = "min. 0,450 m"
Case Is = "540.40 RF"
Ausgabe = "min. 0,450 m"
Case Is = "540.40 RF"
Ausgabe = "min. 0,450 m"
End Select
If Intersect(Target, Range("B10")) Is Nothing Then Exit Sub
 
 With Target.Validation
     .Delete
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
     .IgnoreBlank = True
     .InCellDropdown = True
     .InputTitle = "Hinweis:"
     .ErrorTitle = ""
     .InputMessage = Ausgabe
     .ErrorMessage = ""
     .ShowInput = True
     .ShowError = True
 End With
'
'
'
Dim Ausgabe1$
Select Case Cells(3, 2)
Case Is = "540.20 RF"
Ausgabe1 = "min. 1,450 m"
Case Is = "540.20 KF"
Ausgabe1 = "min. 1,350 m"
Case Is = "540.31 KF"
Ausgabe1 = "min. 2,450 m"
Case Is = "540.40 RF"
Ausgabe1 = "min. 2,500 m"
Case Is = "540.40 RF"
Ausgabe1 = "min. 2.500 m"
End Select
If Intersect(Target, Range("D10")) Is Nothing Then Exit Sub
 
 With Target.Validation
     .Delete
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
     .IgnoreBlank = True
     .InCellDropdown = True
     .InputTitle = "Hinweis:"
     .ErrorTitle = ""
     .InputMessage = Ausgabe1
     .ErrorMessage = ""
     .ShowInput = True
     .ShowError = True
 End With

End Sub

Gruß Manuel


  

Betrifft: AW: Variable Eingabemeldung von: Steffi
Geschrieben am: 16.10.2014 09:00:41

Hallo Manuel,

der Grund warum der zweite Teil des Codes nicht funktioniert sollte diese Zeile hier sein:

If Intersect(Target, Range("B10")) Is Nothing Then Exit Sub
Sobald du die Auswahl änderst und dabei nicht B10 anwählst, bricht er an dieser Stelle wegen dem Exit Sub ab.

Probiers mal so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
'
Dim Ausgabe$
Select Case Cells(3, 2)
Case Is = "540.20 RF"
Ausgabe = "min. 0,420 m"
Case Is = "540.20 KF"
Ausgabe = "min. 0,520 m"
Case Is = "540.31 KF"
Ausgabe = "min. 0,450 m"
Case Is = "540.40 RF"
Ausgabe = "min. 0,450 m"
Case Is = "540.40 RF"
Ausgabe = "min. 0,450 m"
End Select


If Not Intersect(Target, Range("B10")) Is Nothing Then
 
 With Target.Validation
     .Delete
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
     .IgnoreBlank = True
     .InCellDropdown = True
     .InputTitle = "Hinweis:"
     .ErrorTitle = ""
     .InputMessage = Ausgabe
     .ErrorMessage = ""
     .ShowInput = True
     .ShowError = True
 End With
 
 Exit Sub
End If
'
'
Dim Ausgabe1$
Select Case Cells(3, 2)
Case Is = "540.20 RF"
Ausgabe1 = "min. 1,450 m"
Case Is = "540.20 KF"
Ausgabe1 = "min. 1,350 m"
Case Is = "540.31 KF"
Ausgabe1 = "min. 2,450 m"
Case Is = "540.40 RF"
Ausgabe1 = "min. 2,500 m"
Case Is = "540.40 RF"
Ausgabe1 = "min. 2.500 m"
End Select
If Not Intersect(Target, Range("D10")) Is Nothing Then
 
 With Target.Validation
     .Delete
     .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
     .IgnoreBlank = True
     .InCellDropdown = True
     .InputTitle = "Hinweis:"
     .ErrorTitle = ""
     .InputMessage = Ausgabe1
     .ErrorMessage = ""
     .ShowInput = True
     .ShowError = True
 End With
 
 Exit Sub
 
End If

End Sub


Gruß Steffi


  

Betrifft: AW: Variable Eingabemeldung von: Manuel
Geschrieben am: 16.10.2014 09:13:25

Vielen Dank für deine Antwort Steffi.

Das löst mein Problem. So einfach kann es also sein.
Könntest du mit diese geänderte Zeile kurz erklären? Was passiert dabei genau?

If Not Intersect(Target, Range("B10")) Is Nothing Then

Das wäre super!

Danke nochmal,
Gruß Manuel


  

Betrifft: AW: Variable Eingabemeldung von: Steffi
Geschrieben am: 16.10.2014 09:33:17

Letztendlich prüft er dort eigentlich nur ob die ausgewählte Zelle B10 ist oder nicht. Wenn sie es ist, dann werden die nachfolgenden Befehle ausgeführt, wenn nicht dann wird zu 'End If' gesprungen.

Stattdessen könnte man bspw. auch schreiben:

If Target.Address = Range("B10").Address Then
Hoffe das beantwortet deine Frage.


Gruß Steffi


  

Betrifft: AW: Variable Eingabemeldung von: Manuel
Geschrieben am: 16.10.2014 09:36:50

Ja das beantwortet meine Frage.
Danke für die Erklärung und deine kompetente Hilfe.

Gruß Manuel


 

Beiträge aus den Excel-Beispielen zum Thema "Variable Eingabemeldung"