2.7k Aufrufe
Gefragt in Tabellenkalkulation von kurtl Mitglied (239 Punkte)
Hallo liebe Experten, muss Euch wieder mal mit einem Problem behelligen - sorry, aber ich komme sonst nicht weiter...
In einer exel Tabelle (Tabellenblatt "neuerTLN") erscheinen in Zelle C18 abhängig von den Eingaben in Zellen E10 u. E12 über WENN Funktion verschiedene Wörter.
Sobald in Zelle C18 das Wort "Fehler" auftaucht sollte ein zuvor erstelltes Makro "Anmeldung_sperren" seine Funktion ausführen. Kann mir jemand helfen?

Danke im vorraus
kurtl

8 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Kurt,

das geht nur über Funktion, damit können aber keine Zellen verändert werden.
Warum benutzt Du nicht Change für E10 und E12?

Gruß Hajo
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Hajo,
danke für die schnelle Antwort aber jetzt wirst Du gleich mit den Augen rollen... was bedeutet Change für E10 u. E12 ?

Gruss kurtl
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Kurt,

das ist ein Ereignis unter der Tabelle.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$10" Or Target.Address = "$E$12" Then
' mache dies
End If
End Sub


Gruß Hajo
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Hajo,
also ich hab den Code ausprobiert - in dem Tabellenblatt - aber es passiert nichts. Ich verstehe das auch leider nicht. Soll " mache dies" jetzt das Makro sein, welches bei mir "Anmeldung_sperren" heißt?
Die Zelle sollte schon C18 sein, welche das Makro auslöst denn das Ergebnis aus der Kombination E10 u. E12 steht nun mal in C18 und erst wenn dort das Wort Fehler auftaucht soll das Makro Anmeldung_sperren ausgelöst werden. Ich hoffe Du verstehst mein wirres flehen.

Gruss kurtl
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
hallo Kurt,

Du hattest geschrieben durch Eingabe in E10 oder E12 wird C... verändert. Darum hätte ich Change benutzt.
Du willst jetzt aber Unbedingt C.. mit einer Formel als auslöser nehmen. Da mußt Du Calculate benutzen mir istr das aber zu aufwendig.
Ich bin dann raus.

Gruß hajo
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Hajo,
trotzdem Danke für Deine Mühe. Vielleicht, kannst Du oder ein anderer Experte trotzdem noch weiterhelfen. Ich habe jetzt mit Deinem Makro, kombiniert mit einem 2. Makro und einigen WENN Funktion Umwegen erreicht. Sieht so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$12" Then
Testsprung
End If
If Target.Address <> "$A$2" Then Exit Sub
If Range("A2").Value > 1 Then
Range("A1").Value = 15
Else
Range("A1").Value = ""
End If
If Range("A1").Value > 10 Then
Call springen
End If
End Sub
Jetzt möchte ich aber, dass in E10 ein Makro alles in Großbuchstaben verwandelt. Hatte ich mit folgendem Makro schon erreicht:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsEmpty(Target) Then Exit Sub
If Intersect(Target, Range("E10")) _
Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target = UCase(Target)
ERRORHANDLER:
Application.EnableEvents = True
End Sub
Jetzt das Problem:
Beide Makros einzeln können nicht in einem Codefenster stehen, da kommt Fehlermeldung ..doppelter Name... und wenn ich die beiden Makros zu einem verarbeite, funktioniert entweder das eine oder das andere nicht also entweder keine Großbuchstaben oder eben kein "springen".
Gruß kurtl
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo kurtl,

wenn du beide Makros nur zusammenfügst klappt das mit der Zelle E10 nicht, weil du im 1. Makro
If Target.Address <> "$A$2" Then Exit Sub

stehen hast, das Makro also hier beendet wird, wenn der Cursor sich nicht in der Zelle A2 befindet. Das musst du entsprechend ändern.

Versuch es mal so:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$E$12" Then
Testsprung
End If

If Target.Address = "$A$2" Then

If Range("A2").Value > 1 Then
Range("A1").Value = 15
Else
Range("A1").Value = ""
End If

If Range("A1").Value > 10 Then
Call springen
End If

End If

If IsEmpty(Target) Then Exit Sub

If Intersect(Target, Range("E10")) _
Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target = UCase(Target)
ERRORHANDLER:
Application.EnableEvents = True


End Sub


Gruß

M.O.
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo M.O.
das hat super funktioniert !!! Ich hab das "Großbuchstabenmakro" zwar auch schon an das Ende des Gesamtmakros gesetzt, aber da ging nichts- ich muss das noch einmal nachvollziehen, was ich da falsch gemacht habe.
Auf jeden Fall funktioniert das jetzt so wie ich mir das vorgestellt habe und ich Danke Dir und Hajo ganz herzlich!

Gruß kurtl
...