Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
776to780
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
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro auslösen durch Zellinhalt

Makro auslösen durch Zellinhalt
05.07.2006 19:00:28
Peter
Hallo Excel-User,
ich habe wiedermal ein ich denke kleines Problem.
Im Tabellenblatt ("1. Angebot") soll, wenn man in Zelle E22 eine Zahl >0 eingetragen hat ein Makro ("Drehfeld11neu") gestartet werden. Ebenso soll, wenn man im selben Blatt in Zelle E28 eine Zahl >0 eingetragen hat ein Makro ("Drehfeld125neu") gestartet werden. Außerdem soll auch noch ein Makro ("Drehfeld126neu") gestartet werden wenn man in Zelle E22 und E28 eine Zahl >0 eingetragen hat.
Bei meinem Code (als Beispiel erstmal nur für Zelle E22)

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Range("E22") > 0 And Target.Address = "$E$22" Then Call Drehfeld11neu
End Sub

gibt es bei der Ausführung in Excel folgende Fehlermeldung:
"Mehrdeutiger Name: Worksheet_SelectionChange"
was mach ich nur falsch?!
Bitte um schnellstmögliche Hilfe und Danke im Voraus.
mfg Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro auslösen durch Zellinhalt
05.07.2006 19:04:46
Kurt
Hi,
du hast die prozedur
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
mehr als einmal im Modul, das darf aber nicht sein.
mfg Kurt
AW: Makro auslösen durch Zellinhalt
05.07.2006 19:12:10
fcs
Hallo Peter,
das Makro "Worksheet_SelectionChange" darf nur einmal pro Tabellenblatt angelegt werden.
So müßte das Makro für deine Bedingungen etwa aussehen:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Value > 0 And Target.Address = "$E$22" Then Call Drehfeld11neu
If Target.Value > 0 And Target.Address = "$E$28" Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And Range("$E$28").Value > 0 Then Call Drehfeld126neu
End Sub

gruss Franz
Anzeige
AW: Makro auslösen durch Zellinhalt
05.07.2006 19:23:36
Peter
Hallo Franz,
wenn ich deinen Code verwende:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Value > 0 And Target.Address = "$E$22" Then Call Drehfeld11neu
If Target.Value > 0 And Target.Address = "$E$28" Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And Range("$E$28").Value > 0 Then Call Drehfeld126neu
End Sub

kommt folgende Fehlermeldung: "Laufzeitfehler 13" und "Typen unverträglich"
Was könnte da noch falsch sein?
mfg Peter
Anzeige
AW: Makro auslösen durch Zellinhalt
05.07.2006 19:54:42
fcs
Hi peter,
habe jetzt erst gemerkt, dass du das Worksheet_Change statt des Worksheet_SelectionChange verwenden muß.
Die Meldung "Typen unverträglich" kommt wenn in den Zellen E22 oder E28 Text eingegeben wird bzw. keine Zahl. Ggf. auch das Format der Zellen prüfen ob es auf Text (@) eingestellt ist. Wenn ja, dann ändern in Standard oder Zahlenformat.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Value > 0 And Target.Address = "$E$22" Then Call Drehfeld11neu
If Target.Value > 0 And Target.Address = "$E$28" Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And Range("$E$28").Value > 0 Then Call Drehfeld126neu
End Sub

gruss Franz
Anzeige
AW: Makro auslösen durch Zellinhalt
05.07.2006 20:30:05
Peter
Hallo Franz,
der Teil funktioniert, leider hat sich jetzt ein weiteres Problem aufgetan und zwar beim entfernen der eingegebenen Zahlen in der einen oder andern oder in beiden Zellen.
Ich habs versucht zu lösen, leider wieder Laufzeitfehler 13 und Typen unverträglich.
Ich wäre dir sehr verbunden wenn du mir da nochmal helfen könntest.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Value > 0 And Target.Address = "$E$22" Then Call Drehfeld11neu
If Target.Value > 0 And Target.Address = "$E$28" Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And Range("$E$28").Value > 0 Then Call Drehfeld126neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value = "" And Range("$E$28").Value > 0 Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And Range("$E$28").Value = "" Then Call Drehfeld11neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value = "" And Range("$E$28").Value = "" Then Call Drehfeld126neu
End Sub

Danke im Voraus
mfg Peter
Anzeige
AW: Makro auslösen durch Zellinhalt
06.07.2006 00:03:36
fcs
Hi Peter,
leere Zellen werden mit "Isempty(Zelle)" überprüft. Ich hab auch die Überprüfung auf Zahleneingabe eingebaut, damit versehentliche Eingabe von Text keinen Makroabbruch erzeugt.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsNumeric(Target) Then
If Target.Value > 0 And Target.Address = "$E$22" Then Call Drehfeld11neu
If Target.Value > 0 And Target.Address = "$E$28" Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And Range("$E$28").Value > 0 Then Call Drehfeld126neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And IsEmpty(Range("$E$22")) And Range("$E$28").Value > 0 Then Call Drehfeld125neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And Range("$E$22").Value > 0 And IsEmpty(Range("$E$28")) Then Call Drehfeld11neu
If (Target.Address = "$E$22" Or Target.Address = "$E$28") _
And IsEmpty(Range("$E$22")) And IsEmpty(Range("$E$28")) Then Call Drehfeld126neu
Else
MsgBox ("Nur Zahleneingaben sind zulässig!")
Target.Select
End If
End Sub

Allerding wird jetzt wenn beide Zellen E22 und E28 leer sind
Makro Drehfeld11neu zwei mal ausgeführt wenn in E22 ein Wert>0 eingegeben wird
Makro Drehfeld125neu zwei mal ausgeführt wenn in E28 ein Wert>0 eingegeben wird
Falls das ok ist brauchst du nichts ändern. Wenn die Makros in diesen Fällen nur einmal ausgeführt werden sollen, dann passe wie folgt an. Ich hab hier mit Select Case gearbeitet weil dann die Bedingungen etwas übersichtlicher dargestellt werden können:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsNumeric(Target) Then
Select Case Target.Address
Case "$E$22"
If Target.Value > 0 Or _
(Range("$E$22").Value > 0 And IsEmpty(Range("$E$28"))) Then Call Drehfeld11neu
If IsEmpty(Range("$E$22")) And Range("$E$28").Value > 0 Then Call Drehfeld125neu
If (Range("$E$22").Value > 0 And Range("$E$28").Value > 0) Or _
(IsEmpty(Range("$E$22")) And IsEmpty(Range("$E$28"))) Then Call Drehfeld126neu
Case "$E$28"
If Target.Value > 0 Or _
(IsEmpty(Range("$E$22")) And Range("$E$28").Value > 0) Then Call Drehfeld125neu
If Range("$E$22").Value > 0 And IsEmpty(Range("$E$28")) Then Call Drehfeld11neu
If Range("$E$22").Value > 0 And Range("$E$28").Value > 0 Or _
(IsEmpty(Range("$E$22")) And IsEmpty(Range("$E$28"))) Then Call Drehfeld126neu
Case Else
'do nothing
End Select
Else
MsgBox ("Nur Zahleneingaben sind zulässig!")
Target.Select
End If
End Sub

gruss Franz
Anzeige
AW: Makro auslösen durch Zellinhalt
06.07.2006 11:10:34
Peter
Hallo Franz,
funktioniert leider immer noch nicht 100% ig.
Wenn ich jetzt z.B. in E22 eine Zahl zu stehen habe und diese mit der "Entf" Taste lösche, dann erscheint die Message Box "Nur Zahleneing....." und kein Makro wird ausgeführt.
Ich habe schon versucht die Bedingung das nur numerische Zeichen eingegeben werden dürfen herauszunehmen, leider nicht geschaft.
Bitte nochmals schnellstmöglich um Mithilfe, und nochmals Danke.
mfg Peter
AW: Makro auslösen durch Zellinhalt
07.07.2006 10:53:41
Peter
geschafft

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige