Microsoft Excel

Herbers Excel/VBA-Archiv

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

Pflichtfeld in Excel

Betrifft: Pflichtfeld in Excel von: Alex
Geschrieben am: 06.11.2012 14:54:44

Hallo Zusammen,

ich würde gerne ein Pflichtfeld gestalten welches mit "Yes" oder "No" beantwortet werden muss sobald in einer anderen Zeile über einen Dropdown / per Verweis ein bestimmte Kategorie ausgewählt wurde.

Bsp:

Wenn Zelle P = "XYP" dann muss in Zelle Q "Yes" oder "No" ausgewählt werden.

Ich habe jetzt in mehrern Foren gelesen, dass dies nur über VBA möglich ist. Da ich selbst aber keinen Schimmer von VBA hab, hoffe ich auch eure Unterstützung :).

Im Voraus vielen Dank!

Beste Grüße,
Alex

  

Betrifft: AW: Pflichtfeld in Excel von: Alex
Geschrieben am: 06.11.2012 14:58:21

PS: ich mein natürlich Zelle nicht Zeile. Danke!


  

Betrifft: AW: Pflichtfeld in Excel von: Klaus M.vdT.
Geschrieben am: 06.11.2012 15:08:01

Hi Alex,
1) Wenn Zelle P = "XYP" dann muss in Zelle Q "Yes" oder "No" ausgewählt werden.
2) PS: ich mein natürlich Zelle nicht Zeile. Danke!
Vielleicht meinst du Spalten?

Grüße,
Klaus M.vdT.


  

Betrifft: AW: Pflichtfeld in Excel von: Alex
Geschrieben am: 06.11.2012 15:24:18

Hallo Klaus,

ja genau, bin anscheinend schong ganz verwirrt.

Also nochmal:

In Spalte P wird per Verweis / DropDown ein Wert angezeigt z.B: "XYZ"
Wenn dieser Wert erscheint /ausgewählt wird, muss obligatorisch in Spalte Q der Wert "Yes" oder "No" eingetragen werden.

Im Voraus vielen Dank!

Beste Grüße,
Alex


  

Betrifft: Auf die schnelle und unsauber von: Klaus M.vdT.
Geschrieben am: 06.11.2012 15:27:55

Hi Alex,
folgender Code funktioniert, solange nur eine Zelle im Bereich ausgewählt ist. Ich komm grad nicht drauf, wie man das vernünftig abfängt ... kann bestimmt jemand anders fix korrigieren.

Da deine Eingangsfrage so unklar war, habe ich ein paar Annahmen getroffen.
ALT+F11 in den VBA-Editor, links im Explorer auf dein Tabellenblatt clicken (Tabelle1?), den Code in das große weiße Fenster kopieren, Bereich und Suchwort anpassen.

Ändert sich per Eingabe oder DropDown der Inhalt einer Zelle im überwachten Bereich, springt der Code an. Bei Änderungen per Formel passiert garnix, um das zu realisieren müsste man deine Datei und Formeln kennen.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rBereich As Range
    Dim sCheckIt As String
       
    'HIER den Bereich anpassen, zB auf P2:P1000 wenn du 999 Einträge hast!
    Set rBereich = Range("P2:P20")
    'HIER das Suchwort setzten!
    sCheckIt = "XYP"
    
    Set rBereich = Intersect(rBereich, Range(Target.Address))
    
    If Not rBereich Is Nothing Then
        
        On Error GoTo EndMe 'schmiert ab, wenn mehr als eine Zelle ausgewählt wurde
        Debug.Print rBereich.Cells.Count
        If rBereich.Value = sCheckIt Then
            Application.EnableEvents = False
                rBereich.Offset(0, 1).Select
                If MsgBox("YES or NO?", vbYesNo) = 6 Then
                    rBereich.Offset(0, 1).Value = "YES"
                Else '=7
                    rBereich.Offset(0, 1).Value = "NO"
                End If
            Application.EnableEvents = True
        End If
    End If
EndMe:
End Sub



  

Betrifft: AW: Auf die schnelle und unsauber von: Alex
Geschrieben am: 06.11.2012 16:25:34

Hallo Klaus,

vielen Dank für den Code.

Ich hab es jetzt so gemacht wie angewiesen, nur passiert nichts, da der gesuchte Text über eine Formel [=WENN(ISTNV(VERGLEICH($N1;Tabelle1!$B:$B;0));"";VERWEIS($N1;Tabelle1!$B:$B;Tabelle1!$D:$D)] kommt. Kann man die Formel über den Code mit einbauen?

Desweiteren: Wie ist das mit der Message Box und der Abfrage, wird diese dann in Zelle Q angezeigt? Also ob "Yes" oder "No"?

Irgendwie ist nichts passiert nachdem ich das Makro aktiviert, abgespeichert und neu geöffnet hab.

Im Voraus vielen Dank!

Beste Grüße,
Alex

PS: Soll ich eine Beispieldatei erstellen, um es besser darstellen zu können?


  

Betrifft: AW: Auf die schnelle und unsauber von: Alex
Geschrieben am: 06.11.2012 16:58:33

Hallo Zusammen,

hier auch nochmal ein File, dass meine Problematik (hoffentlich) ein bisschen näher bringt.

https://www.herber.de/bbs/user/82514.xlsx

Vielen Dank & beste Grüße aus Paris,
Alex


  

Betrifft: AW: probier mal von: hary
Geschrieben am: 06.11.2012 17:40:17

Hallo Alex
Teste mal.
https://www.herber.de/bbs/user/82515.xlsm
gruss hary
Code fuer Mitleser.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Variant
If Target.Column = 1 And Target.Count = 1 Then
   a = Application.Match(Target, Worksheets("Tabelle2").Columns(1))
    If IsNumeric(a) Then Cells(Target.Row, 2) = Worksheets("Tabelle2").Cells(a, 2)
     If Cells(Target.Row, 2) = "Sparte3" Then
        Cells(Target.Row, 3) = IIf(MsgBox("Lizenz vorhanden?", vbYesNo) = vbYes, "Yes", "No")
     End If
End If
End Sub



  

Betrifft: AW: probier mal von: Alex
Geschrieben am: 06.11.2012 18:37:34

Hallo hary,

vielen Dank für deine Antwort. Ich hab alles soweit angepasst, nur funktioniert es nciht ganz. Für was steht den "Cells (a, 2) ? Daran hapert es bei mir glaub ich noch...

Im Voraus vielen Dank!

BEste Grüße,
Alex


  

Betrifft: AW: probier mal von: Alex
Geschrieben am: 06.11.2012 19:53:52

Hallo hary,

nochmal ich: Hab den VBA Code jetzt dem ensprechend angepasst, nur leider macht es immer noch nichts:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Variant
If Target.Column = 14 And Target.Count = 14 Then
a = Application.Match(Target, workssheets("Product").Columns(2))
If IsNumeric(a) Then Cells(Target.Row, 16) = Worksheets("Product").Cells(a, 2) 'das Produkt ist  _
in Spalte 2 und die Sparte in Spalte 4
If Cells(Target.Row, 16) = "11 - Sparte XY" Then 'Produktnamen und Sparte sind nicht numerisch.. _
.macht das was?
Cells(Target.Row, 17) = IIf(MsgBox("Licence ordered?", vbYesNo) = vbYes, "Yes", "No")
End If
End If
End Sub
Mach ich einen Denkfehler, oder hab ich was falsch gemacht, oder woran könnte das liegen?

Ich geh heim, schönen Abend!
Beste Grüße,
Alex


  

Betrifft: AW: probier mal von: hary
Geschrieben am: 07.11.2012 06:51:03

Hallo Alex
ungetestet.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Variant
If Target.Column = 14 And Target.Count = 1 Then
a = Application.Match(Target, Worksheets("Product").Columns(2)) 'das Produkt ist in Spalte 2
If IsNumeric(a) Then Cells(Target.Row, 16) = Worksheets("Product").Cells(a, 4) 'die Sparte in  _
Spalte 4
If Cells(Target.Row, 16) = "11 - Sparte XY" Then 'Produktnamen und Sparte sind nicht numerisch.. _
 _
.macht das was? 
Cells(Target.Row, 17) = IIf(MsgBox("Licence ordered?", vbYesNo) = vbYes, "Yes", "No")
End If
End If
End Sub

Mit Target.Count prueft man die Anzahl der ausgewaehlten Zellen. Du hattest aber 14 ausgewaehlte verlangt. ;-)
Cells(a,2) = Cells(Zeilennummer,Spaltennummer) man kann auch schreiben Cells(a,"D")
gruss hary
Wenn's nicht klappt, Bsp.-Mappe mit original Spaltenbenutzung


  

Betrifft: AW: probier mal von: Alex
Geschrieben am: 07.11.2012 09:39:01

ES FUNKTIONIERT :)!!!!
Vielen lieben Dank an alle die geholfen haben!
Beste Grüße,
Alex