Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
172to176
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
172to176
172to176
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Private Sub

Private Sub
23.10.2002 14:18:10
Andre B
Hallo,

ich möchte in einer Private Sub_Change Bezug auf ein anderes Tabellenblatt nehmen( = Spezialfilter setzten ), das klappt auch, einziger Haken bei der ganzen Sache ist, die Tabellenblätter sind dann irgendwie nicht mehr aktive!

Das soll heißen, die sind schon da, man kann damit arbeiten, aber sie sind halt nicht mehr aktive. Z.B. läuft dann eine Private Sub_Activate nicht mehr!

Gibt es einen Code, der diese Arbeitsmappe wieder aktiviert, like "Sheets("Test").aktivate"?

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Private Sub
23.10.2002 15:28:07
Gerrit
Wieso baust Du den spezialfilter nicht in ein Public Modul und rufst ihn über die Change auf?
Dann müsste das eigentlich klappen
Re: Private Sub
23.10.2002 16:23:20
Andre B
Also, der Code, der den Filter auslöst ist in einem Modul untergebracht, aber dieser Code wird durch Private Sub_Change angesprochen ( Call ... ).

Das hab ich schon gemacht, aber es bringt nichts!
Ich weiß nichts mehr! Wahrscheinlich gibt´s die Code-Zeile "Sheets("Test").aktivate" nicht, sonst hätte schon einer was gesagt.

Das ist echt ätzend!

Re: Private Sub
23.10.2002 16:56:47
Gerrit
Also bei mir tu der Code

Sub test()
Sheets("Tabelle2").Activate
End Sub

Re: Private Sub
23.10.2002 17:47:13
Andre B
Hallo Gerrit,

ich hab´s!!!! Die Lösung war, die Zeile "Sheets("blabla").activate" vor dem Filter einzusetzen!

Glaub´ich wenigstens. Jetzt läuft´s auf jeden Fall!!

Danke für deine Hilfe und bis bald.

Anzeige
Zu früh gefreut!!!
23.10.2002 17:54:25
Andre B
Hab auch wirklich kein Bock mehr mir darüber Kopfschmerzen zu machen!!!!

Mach ich´s jetzt halt mit´m Doppelclick! Das funktioniert komischerweise problemlos! Nur dieses scheiß Private Sub_Activate Enter irgendwas geht mir mächtig auf´n Sack!!!!!

Noch so´ne Aktion von Excel und ich schreib alles wieder per Hand! Da fummel ich seid einer geschlagenen Woche dran!!!!

Trotzdem noch ´n schönen Abend

Re: Zu früh gefreut!!!
24.10.2002 07:36:38
Gerrit
hatte grad das Problem auch, hab meine Arbeitsmappe geöffnet, die richtige Tabelle war schon vorn, aber mein activate Enter Macro tat nicht!
Trick 17! Wie löse ich eigentlich diese action aus? Indem ich von einem anderen Tabellenblatt in das Tabellenblatt springen!
Also lautet mein code beim öffnen:

Private Sub Workbook_Open()
Sheets("Tabelle2").Activate
Sheets("Rondo").Activate
End Sub

Ach was mir da noch auffällt, du steuerst das über eine Change Aktion?! Also so hab ich das verstanden! Das brauchst Du aber nicht gell!!!! Es reicht der Enter Code im Tabellenblatt-aktivate und danach im Modul die Case Fälle!

Anzeige
Sheets.Activate
24.10.2002 08:05:23
Andre B
Guten Morgen Gerrit,

genau das ist auch mein Problem! Also, ich versteh das aber richtig, Sheets("Rondo").Activate bezieht sich auf dein Tabellenblatt namens "Rondo", oder?

Re: Sheets.Activate
24.10.2002 08:35:09
Gerrit
Ja genau und auf diesem ist mein activate Code der der Taste Enter einen oder mehrere Funktionen zuweist, je nach dem welche Zelle im moment den Focus hat!
Re: Sheets.Activate
24.10.2002 08:50:28
Andre B
Okay, so wär´s auch theoretisch in Ordnung.
Leider nícht praktisch, denn bei mir funktioniert das einfach nicht!

Ich hab jetzt den Befehl schon aus der Private Sub rausgenommen und komplett auf ein Button gelegt, aber jedesmal wenn ich den Code, und somit den Spezialfilter ausführe erkennt Excel den Activate-Code der Zieltabelle nicht mehr.

Anzeige
Re: Sheets.Activate
24.10.2002 09:18:48
Gerrit
Versteh ich das richtig, du führst einen spezialfilter aus der auf einem anderen Tabellenblatt (Dein activate Enter TB) das Ergebniss einträgt. Und dann drückst du Enter und es passiert nichts bzw der Zeiger spring einfach eine Zelle tiefer!
Wenn das so ist, dann ruf nach dem spezialfilter irgendeine andere Tabelle auf ( mit sheets("").activate ) und dann ruf wieder deine activate Enter Tabelle auf! Dann müsste es tun!
Wenns dann auch nicht is irgendwas an deinem Code nicht korrekt!
Du kannst ja dein Enter code der in der activate steht einfach in die open, close, activate, deactivate von der Mappe schreiben.
Und alles in ein case "wenn das bestimmte TB active ist" reinpacken!
Anzeige
Re: Sheets.Activate
24.10.2002 10:22:21
Andre B
Das Problem ist immernoch da.

Wenn ich in aus dem Tabellenblatt VBA aufrufe, einmal dieses TabellenBlatt anzeigenlassen und dann wieder zurück zu Excel springe ist der Fehler meistens behoben und Activate funktioniert wieder.
Auf jeden Fall funktioniert es wieder, wenn ich kurz Excel minimiere oder anders das Programm wechsel und wieder zurück gehe!!!!

Also, hier der Code, der den Filter auslöst:

Sub Matchd()
Sheets("Match").Visible = True
Sheets("Match").Select
ActiveSheet.Unprotect ("andre")
Sheets("Debitorenstamm").Range("A8:H15").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Sheets("Debitorenstamm").Range("B2:B3"), CopyToRange:= _
Sheets("Match").Range("B8:I8"), Unique:=False
Sheets("Match").Select
Sheets("Match").Activate
ActiveSheet.Protect ("andre")
Range("c8").Select
End Sub


Im Tabellenblatt("Match") liegt folgender Code:

Private Sub Worksheet_Activate()
Application.OnKey "{ENTER}", "ZellAenderung2"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{ENTER}"
End Sub

Dann in einem Modul:

Sub ZellAenderung2()

Const BEREICH1 = "B9:B65000"
If Not Intersect(ActiveCell, Range(BEREICH1)) Is Nothing Then
Range("A1").Value = ActiveCell.Offset(0, 0)
Range("a1").Select
Sheets("Angebotserfassung").Select
Range("D6").Select
ActiveCell.FormulaR1C1 = Range("Match!A1").Value
GoTo Ende
End If
Const BEREICH2 = "C9:C65000"
If Not Intersect(ActiveCell, Range(BEREICH2)) Is Nothing Then
Range("A1").Value = ActiveCell.Offset(0, -1)
Range("a1").Select
Sheets("Angebotserfassung").Select
Range("D6").Select
ActiveCell.FormulaR1C1 = Range("Match!A1").Value
GoTo Ende
End If
Const BEREICH3 = "D9:D65000"
If Not Intersect(ActiveCell, Range(BEREICH3)) Is Nothing Then
Range("A1").Value = ActiveCell.Offset(0, -2)
Range("a1").Select
Sheets("Angebotserfassung").Select
Range("D6").Select
ActiveCell.FormulaR1C1 = Range("Match!A1").Value
GoTo Ende
End If
End if



Anzeige
Re: Sheets.Activate
24.10.2002 11:06:54
Gerrit
Du hast recht! excel vergisst da wohl, das Ausführen des Befehls Worksheet_Activate!
Wie wärs wenn du ans ende von Sub match eunfach schreibst

call Match.Worksheet_Activate()

oder du schreibst nach Range("c8").Select in der Sub Match:

Sheets("Debitorenstamm").activate
Sheets("Match").activate

Es könnte an dem Blattschutz liegen, dass Excel nicht erkennt, das das Tabellenblatt aktiviert ist! Also musst du nach dem Blattschutz das TB wechseln und dann das match wieder activieren!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige