Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Begründung einer Bewertung
#1
Guten morgen zusammen.

Ich habe da ein Problem, wo ich keine Lösung zu finde. Vielleicht könnt ihr mir ja bitte mal helfen.

In Spalte A kann in jeder Zelle über eine Dropdown-Liste folgendes ausgewählt werden: "n.b., 0, 2, 4, 6, 8, 10"
- Wenn in einer Zelle "n.b." steht, dann soll in Spalte B in der gleichen Zeile automatisch "ABC" stehen.
- Wenn in einer Zelle "10" steht, dann soll in Spalte B in der gleichen Zeile automatisch "XYZ" stehen.
- Wenn in einer Zelle "0, 2, 4, 6 oder 8" steht, dann soll in Spalte B in der gleichen Zeile automatisch "Text eingeben" stehen. Wenn das der Fall ist, dann muss der Mitarbeiter einen Text dort in der Zelle eingeben. Dieser eingegebene Text soll dann aber drin stehen bleiben, auch wenn sich der Wert "0, 2, 4, 6 oder 8" in Spalte A noch einmal ändert. Nur wenn auf "n.b. oder 10" geändert wird, soll der eingegebene Text mit "ABC" oder "XYZ" wieder überschrieben werden.

Ich hoffe, ich habe es verständlich geschrieben?! Wie bekomme ich das mit einem Makro hin?

Vielen Dank im Voraus.

radkappe
Antworten Top
#2
Hallo,

versuche diesen Code:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
Select Case Target.Value
Case "n.b."
Target.Offset(, 1) = "ABC"
Case 10
Target.Offset(, 1) = "XYZ"
Case 0, 2, 4, 6, 8
Target.Offset(, 1) = "Text eingeben"
End Select
End Sub

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • radkappe
Antworten Top
#3
Hallo Fennek.

Vielen Dank für deine Antwort.

Es gibt nur noch ein Problem. Wenn ich in Spalte B einen Text eingegeben habe und den Wert z.B. von 8 auf 6 ändere, überschreibt er mir meinen eingetragenen Text und macht wieder "Text eingeben". 
Wenn ich 0, 2, 4, 6 oder 8 auswähle, soll der von mir eingetragene Text aber drin stehen bleiben und nicht überschrieben werden.

Gruß radkappe
Antworten Top
#4
Hallo,

teste mal

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
   Select Case Target.Value
      Case "n.b."
         Target.Offset(, 1) = "ABC"
      Case 10
         Target.Offset(, 1) = "XYZ"
      Case 0, 2, 4, 6, 8
         If IsEmpty(Target.Value) Then Target.Offset(, 1) = "Text eingeben"
   End Select
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Hallo Steffl.

Vielen Dank für deine Antwort.

Den eingegebenen Text überschreibt er nicht mehr. Das funktioniert.
Aber es wird nicht bei der ersten Auswahl einer Zahl kein "Text eingeben" eingetragen. Der Inhalt der in Spalte B stand bleibt bestehen.

Gruß radkappe
Antworten Top
#6
Hallo,

und so?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
   Select Case Target.Value
      Case "n.b."
         Target.Offset(, 1) = "ABC"
      Case 10
         Target.Offset(, 1) = "XYZ"
      Case 0, 2, 4, 6, 8
         If IsEmpty(Target.Offset(, 1).Value) Then Target.Offset(, 1) = "Text eingeben"
   End Select
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
Hallo.

Hat sich nicht verändert.  Huh

Spalte B verändert sich nicht.

Gruß radkappe
Antworten Top
#8
Hallo,

und jetzt?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
   Select Case Target.Value
      Case "n.b."
         Target.Offset(, 1) = "ABC"
      Case 10
         Target.Offset(, 1) = "XYZ"
      Case 0, 2, 4, 6, 8
         If IsEmpty(Target.Offset(, 1).Value) Or Target.Offset(, 1) = "ABC" Or Target.Offset(, 1) = "XYZ" Then Target.Offset(, 1) = "Text eingeben"
   End Select
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#9
Hallo,

dann vielleicht so?


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
   Select Case Target.Value
      Case "n.b."
         Target.Offset(, 1) = "ABC"
      Case 10
         Target.Offset(, 1) = "XYZ"
      Case 0, 2, 4, 6, 8
         If Target.Offset(, 1).Value <> "Text eingeben" then

        Else
        Target.Offset(,1) = "Text eingeben"
         End If
  End Select
End Sub

Gruß
Ich
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • radkappe
Antworten Top
#10
Hallo.

Vielen Dank! Jetzt hat es funktioniert.

Aber mir ist gerade noch ein neues Problem aufgefallen.

Ich habe mir 2 Buttons ins Tabellenblatt gebaut. Wenn der eine Button angeklickt wird, dann sollen alle Zellen auf 10 gesetzt werden. Bei dem anderen Button sollen alle Zellen auf n.b. gesetzt werden. Das funktioniert ja auch soweit. (Die Makros habe ich im Modul1 stehen) Nur ändern sich die Texte in Spalte B nicht automatisch! 

Wenn ich über die Dropdown-Liste gehe und jede Zelle einzeln auswähle, funktioniert das Makro (ist im Tabellenblatt gespeichert) wie Steffl mir geschrieben hat. Mache ich das über die Button passiert in Spalte B gar nichts.

Wo ist der Haken?

Gruß radkappe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste