Clever-Excel-Forum

Normale Version: Wort sperren ??
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
ich habe eine Tabelle die mit dem nachfolgenden VBA Code ausgerüstet ist:
Code:
Private Sub cbobeifahrer_Change()
End Sub

Private Sub cboeigene_Change()
End Sub

Private Sub CommandButton1_Click()
   Z = Range("A1").End(xlDown).Row + 1
   If Z > 65000 Then Z = 2
   Cells(Z, 1) = Me.cboSB.Value
   Cells(Z, 2) = Me.cbovorg.Value
   If Me.TextBox3 <> "" Then
      Cells(Z, 3) = CDbl(Me.TextBox3.Value)
   Else
      Cells(Z, 3) = ""
   End If
  
   If Me.TextBox4 <> "" Then
      Cells(Z, 4) = CDbl(Me.TextBox4.Value)
   Else
      Cells(Z, 4) = ""
   End If
  
   Cells(Z, 5) = Me.cbovorgang.Value
   Cells(Z, 6) = TextBox6
   Cells(Z, 7) = TextBox7
   Cells(Z, 8) = CDate(Me.txtdatum.Value)
   Cells(Z, 9) = Me.cboeigene.Value
   Cells(Z, 10) = TextBox10
   Cells(Z, 11) = Me.cboabgabe.Value
   Cells(Z, 12) = Me.cbobeifahrer.Value
   If IsDate(Me.Controls("TextBox12")) Then
      Cells(Z, 13) = Format(TextBox12, "dd.mm.yyyy")
   Else
      Cells(Z, 13) = ""
      
   End If
End Sub

Private Sub CommandButton2_Click()
   Unload Me
End Sub

Private Sub Label12_Click()
End Sub

Private Sub UserForm_Initialize()
   Dim rngkategorien As Range
   With Me
      .txtdatum.Value = Date
      '.cboSB.List = Range("SB").Value
      .cbovorg.List = Range("Vorgangsart").Value
      .cbovorgang.List = Range("Vorgang").Value
      .cboeigene.List = Range("Eigene").Value
      .cboabgabe.List = Range("Abgabe").Value
      .cbobeifahrer.List = Range("Beifahrer").Value
   End With
End Sub

In dem Eingabefenster ist unter der Rubrik Vorgang eine Liste hinterlegt mit verschiedenen Vorgängen.
Zudem lässt es das Fenster zu einen neuen andersnamigen Vorgang zu erstellen.
Meine Frage wäre nun ist es möglich in dieser bewußten Zelle ein bestimmtes Wort ( z.B. Tier) nicht zuzulassen.
Ich möchte quasi vermeiden, dass das Wort Tier in der Spalte wo der Vorgang erscheint nicht geschrieben werden kann. Ich hoffe ich habe mich deutlich ausgedrückt.

Gruß Fred
Hi Fred!
Zitat:Ich hoffe ich habe mich deutlich ausgedrückt.

Eher nicht!
Wenn es darum geht, eine ComboBox ohne das "böse" Wort zu füllen, nutze statt .List = .Value besser die .AddItem-Methode iVm einer Abfrage in der dann nötigen Schleife.
Geht es Dir darum, das Wort nicht auswählen zu dürfen, nutze das ComboBox_Change-Event.
Gleiches gilt für händische Einträge in der ComboBox.

Gruß Ralf
Hallöchen,

Zitat:Ich möchte quasi vermeiden, dass das Wort Tier in der Spalte wo der Vorgang erscheint nicht geschrieben werden kann.

Eigentlich ist die Aufgabe schon gelöst, da Du im Code keine Eingaben unterdrückst Smile

Aber Spaß beiseite. Du kannst doch die Inhalte genau so abfragen wie bei der TextBox.

If ...value <> "Tier" Then

und damit verhindern, dass "Tier" in die Zelle übernommen wird.
Hallo Andre,
das funktioniert hervorragend habe jetzt so umgeschrieben:
 If Me.cbovorgang.Value <> "Tier" Then
    Cells(Z, 5) = Me.cbovorgang.Value
    Else
    Cells(Z, 5) = "NEIN"
   
 
    End If
   
sodass bei der Eingabe Tier --- im Text NEIN steht.
Gibt's eine Möglichkeit im selben If noch ein weiteres Wort z.b. Pflanze zu sperren und stattdessen im Text ACHTUNG zu schreiben. Habs mal probiert zwei gleiche IFs hintereinander zu setzten ( siehe hier):
 If Me.cbovorgang.Value <> "Tier" Then
    Cells(Z, 5) = Me.cbovorgang.Value
    Else
    Cells(Z, 5) = "NEIN"
   
 
    End If
    If Me.cbovorgang.Value <> "Pflanze" Then
    Cells(Z, 5) = Me.cbovorgang.Value
    Else
    Cells(Z, 5) = "Achtung"
   
 
    End If

da nimmt er mir aber nur den unteren Teil mit der Pflanze nicht aber das Tier ??
wo liegt mein Denkfehler ??

Gruß Fred
Hallo Fred,

so wie Du den zweiten Begriff definiert hast, hebst Du den ersten wieder auf.

Du könntest es z.B. so lösen:

Code:
If ... <> "Tier" Then
  If ... <> "Pflanze" Then
     Cells(Z, 5) = Me.cbovorgang.Value
  Else
     Cells(Z, 5) = "Achtung"
  End If
Else
  Cells(Z, 5) = "NEIN"
End If
ok das passt, vielen Dank

Gruß Fred