Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1196to1200
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Wert "X"
Heinz

Hallo Leute
Habe unteres Makro mit dem ich ein "X" in E5:F eingebe.
Nur möchte ich,das zB. nur in E5 ein "X" oder in F5 ein "X" eingeben kann.
Niemals in E5 & und F5 ein "X".
Hätte bitte jemand eine Hilfe dazu ?
Eventuell das in E5:F nur ein "X" eigegeben darf.Niemals einen anderen Wert.
Danke
Heinz
If Not Intersect(Target, Range("E5:F" & Rows.Count)) Is Nothing Then Application.EnableEvents = False If UCase(Target(1)) = "X" Then Cells(Target.Row, 1) = Date Cells(Target.Row, 2) = Format(Now, "hh:mm") Cells(Target.Row, 7) = Range("P2") ElseIf Target(1) = "" Then If MsgBox("Soll das 'X' gelöscht werden ?", vbYesNo + vbExclamation, "Löschen X") = _ vbYes Then Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 2) = "" Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 7) = "" Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 8) = "" Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 9) = "" Else Application.Undo End If End If End If ErrExit: Application.EnableEvents = True End Sub
einfach mit Daten Gültigkeit begrenzen ...
30.01.2011 10:35:11
Matthias
Hallo Heinz
Tabelle1

 EF
6x 

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
E6Benutzerdefiniert =ZÄHLENWENN($E6:$F6;"x")<2 
F6Benutzerdefiniert =ZÄHLENWENN($E6:$F6;"x")<2 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias
Anzeige
AW: einfach mit Daten Gültigkeit begrenzen ...
30.01.2011 10:59:17
Heinz
Schönen Sonntag,Matthias
Leider komme ich mit Deiner Hilfe nicht weiter.(Fehlende Kenntniss)
Habe die Datei mal hochgeladen.
Könntest du mir bitte ein Beispiel einfügen ?
Danke
Heinz
https://www.herber.de/bbs/user/73313.xls
hier ein Beispiel mit Daten Gültigkeit ...
30.01.2011 11:20:00
Matthias
Hallo Heinz
hier mal ein einfaches Beispiel
https://www.herber.de/bbs/user/73314.xls
Schau Dir in der Datei (im gelben Zellbereich) bitte Daten-Gültigleit an.
Dort ist festgelegt, das es nur ein "x" im relavanten Zeilenbereich geben darf.
Es sind keine anderen Eingaben zulässig.
Tabelle1

 EF
5  

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
E5Benutzerdefiniert =UND(ZÄHLENWENN($E5:$F5;"x")=1;ANZAHL2($E5:$F5)=1) 
F5Benutzerdefiniert =UND(ZÄHLENWENN($E5:$F5;"x")=1;ANZAHL2($E5:$F5)=1) 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias
Anzeige
AW: hier ein Beispiel mit Daten Gültigkeit ...
30.01.2011 11:26:17
Heinz
Hallo Matthias
Genau so !!!
Recht herzlichen Dank !!
Auch dir noch einen schönen Sonntag !!
Gruß
Heinz
AW: Wert "X"
30.01.2011 11:02:34
fcs
Hallo Heinz,
du muss abhängig von der Spalte in der geändert wurde, den Inhalt der linken bzw. Rechten Nachbarzelle prüfen und ggf. einen entsprechenden Hinweis anzeigen.
Das gleiche solltest du dann auch in dem Doppelklick-Makro machen, da das "Application.Undo" nicht korrekt funktioniert, wenn der Zellinhalt per Doppelklick geändert wird.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrExit
Sheets("Sortierrapport").Unprotect
If Not Intersect(Target, Range("E5:F" & Rows.Count)) Is Nothing Then
Application.EnableEvents = False
If (Target.Column = 5 And UCase(Target(1).Offset(0, 1))  "X") _
Or (Target.Column = 6 And UCase(Target(1).Offset(0, -1))  "X") Then
If UCase(Target(1)) = "X" Then
Cells(Target.Row, 1) = Date
Cells(Target.Row, 2) = Format(Now, "hh:mm")
Cells(Target.Row, 7) = Range("P2")
ElseIf Target(1) = "" Then
If MsgBox("Soll das 'X' gelöscht werden ?", vbYesNo + vbExclamation, _
"Löschen X") = vbYes Then
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 2) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 7) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 8) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 9) = ""
Else
Application.Undo
End If
End If
Else
MsgBox "In Spalten E und F darf in einer Zeile immer nur ein ""X"" stehen!"
Target(1).ClearContents
End If
End If
ErrExit:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'   x in die Zelle
Dim RaBereich As Range
Set RaBereich = Range("E5:F6000")
If Intersect(Target, RaBereich) Is Nothing Then Exit Sub
' Abbruch, wenn Aktion nicht im Zielbereich
Cancel = True
If (Target.Column = 5 And UCase(Target(1).Offset(0, 1))  "X") _
Or (Target.Column = 6 And UCase(Target(1).Offset(0, -1))  "X") Then
If Target.Value = "X" Then
Target.Value = ""
Else
Target.Value = "X"
End If
Else
MsgBox "In Spalten E und F darf in einer Zeile immer nur ein ""X"" stehen!"
End If
Set RaBereich = Nothing
End Sub

Anzeige
AW: Wert "X"
30.01.2011 11:14:28
Heinz
Hallo Franz
Ja das funktioniert genau wie gewollt.
Recht herzlichen DANK.
Wünsche dir noch einen schönen Sonntag.
Gruß
Heinz
AW: Wert "X"
30.01.2011 11:44:27
Heinz
Hallo Franz
Habe gerade bemerkt,wenn ich in Sheets Sortierrapport B1 eine andere SAP auswählen möchte,
kommt die MsgBox und Excel läuft und läuft und läuft.
Woran kann das jetzt bitte liegen ?
Heinz
https://www.herber.de/bbs/user/73316.xls
AW: Irgendwo ist der Hund drinnen
30.01.2011 16:35:56
Heinz
Hallo Franz
Leider kann ich jetzt keine Aktion mehr starten.
Excel läuft sich zu Tode.
Teste jetzt schon Stundenlang,leider ohne Erfolg
Könntest Du mir Bitte noch einmal weiterhelfen ?
Gruß
Heinz
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrExit
Dim MinRow&, MaxRow&
Const Gruen& = 32768
Const Weiss& = 16777215
Const Rot& = 255
Columns(4).FormatConditions.Delete
MinRow = IIf(IsEmpty(Range("D5")), Range("D5").End(xlDown).Row, 1)
MaxRow = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)
With Range(Cells(MinRow, 4), Cells(MaxRow, 4))
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ZÄHLENWENN($L$2:$L$50;" & Cells(ActiveCell.Row, 4).Address(0, 1) & ")"
With .FormatConditions(1)
.Interior.Color = Gruen
.Font.Color = Weiss
End With
End With
MinRow = IIf(IsEmpty(Range("D5")), Range("D5").End(xlDown).Row, 1)
MaxRow = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)
With Range(Cells(MinRow, 4), Cells(MaxRow, 4))
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ZÄHLENWENN($M$2:$M$50;" & Cells(ActiveCell.Row, 4).Address(0, 1) & ")"
With .FormatConditions(2)
.Interior.Color = Rot
.Font.Color = Weiss
End With
End With
If Not Intersect(Target, Range("E5:F" & Rows.Count)) Is Nothing Then
Application.EnableEvents = False
If (Target.Column = 5 And UCase(Target(1).Offset(0, 1))  "X") _
Or (Target.Column = 6 And UCase(Target(1).Offset(0, -1))  "X") Then
If UCase(Target(1)) = "X" Then
Cells(Target.Row, 1) = Date
Cells(Target.Row, 2) = Format(Now, "hh:mm")
Cells(Target.Row, 7) = Range("P2")
ElseIf Target(1) = "" Then
'If MsgBox("Soll das 'X' gelöscht werden ?", vbYesNo + vbExclamation, _
'"Löschen X") = vbYes Then
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 2) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 7) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 8) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 9) = ""
Else
Application.Undo
End If
End If
Else
MsgBox "Es kann nur Packer A oder B gewählt werden!"
Target(1).ClearContents
End If
' End If
ErrExit:
Application.EnableEvents = True
End Sub

Anzeige
...oder der Wurm begraben! ;-) Gruß owT
31.01.2011 03:15:47
Luc:-?
:-?
AW: ...oder der Wurm begraben! ;-) Gruß owT
31.01.2011 09:39:34
Heinz
Hallo Leute
Ich würde die Datei schon dringenst benötigen !!
Bitte könnte mir jemand weiterhelfen,wo bei dem Code der Wurm begraben ist?
Danke
Heinz
AW: ...oder der Wurm begraben! ;-) Gruß owT
31.01.2011 13:32:45
fcs
Hallo Heinz,
scheinbar willst du die Sicherheitsabfrage beim löschen eines "X"-Eintrags nicht mehr angezeigt haben. Leider hast du dabei in der Worksheet_Change-Prozedur zum Teil die falschen Zeilen auskommentiert.
So müsste es meiner Meinung nach aussehen:
If Not Intersect(Target, Range("E5:F" & Rows.Count)) Is Nothing Then
Application.EnableEvents = False
If (Target.Column = 5 And UCase(Target(1).Offset(0, 1))  "X") = True _
Or (Target.Column = 6 And UCase(Target(1).Offset(0, -1))  "X") = True Then
If UCase(Target(1)) = "X" Then
Cells(Target.Row, 1) = Date
Cells(Target.Row, 2) = Format(Now, "hh:mm")
Cells(Target.Row, 7) = Range("P2")
ElseIf Target(1) = "" Then
'          If MsgBox("Soll das 'X' gelöscht werden ?", vbYesNo + vbExclamation, _
"Löschen X") = vbYes Then
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 2) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 7) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 8) = ""
Target = "": Cells(Target.Row, 1) = "": Cells(Target.Row, 9) = ""
'          Else
'            Application.Undo
'          End If
End If
Else
MsgBox "Es kann nur Packer A oder B gewählt werden!"
Target(1).ClearContents
End If
End If
ErrExit:
Application.EnableEvents = True
End Sub

In anderen Makros z.B. Heinz2 (LOT hinzufügen) solltest du ggf. die Ereignismakros deaktivieren, damit es nicht zu unerwünschen/zeitfressenden Ausführungen der Ereignismakros kommt.
Gruß
Franz
Anzeige
AW: ...oder der Wurm begraben! ;-) Gruß owT
31.01.2011 19:13:24
Heinz
Hallo Franz
Einfach GENIAL !!
Recht herzlichen DANK
Gruß
Heinz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige