Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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
Inhaltsverzeichnis

Zeile merken beim Wechsel von Tabellenblättern

Zeile merken beim Wechsel von Tabellenblättern
Tabellenblättern
Hallo zusammen,
ich habe ein Problem und komme einfach nicht weiter.
Meine Excel Tabelle hat 3 Tabellenblätter, wechselt man nun von einem auf ein anderes, so soll in dem neuen Blatt bereits eine Zelle in der gleichen Zeile markiert sein, wie im vorigen Blatt.
Beispiel:
* Tabellenblatt 1: eine zelle in der Reihe 12 ist markiert
* wechsel auf Blatt 2: die zelle C 12 ist markiert
* wechsel auf blatt 3: c 12 ist markiert
Ich dachte ich habe des Rätsels Lösung auch schon gefunden, es geht jedoch leider nicht :(
In VBA habe ich für jedes Tabellenblatt folgenden code angelegt:

Private Sub Worksheet_Activate()
' aufruf wenn Tabellenblatt ausgewählt wird
Call zeile_setzen
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' aufruf wenn eine zelle markiert wird
Call zeile_merken_1
End Sub

Weiterhin habe ich folgendes Modul angelegt:
Public i As Integer
Public Sub zeile_merken_1()
' merkt sich die aktuelle Zeile und speichert diese in der klobalen Variable i
i = ActiveCell.Row
End Sub

Public Sub zeile_setzen()
MsgBox ActiveSheet.Name & i 'testausgabe
ActiveSheet.Cells(i, 3).Select ' markieren der übernommenen zeile
End Sub

Seltsamer Weise wird die übernommene Zeile in zeile_setzen() nicht markiert!?
Jedoch ist die Testausgabe korrekt, es wird das angeklickte Tabellenblatt ausgegeben und auch die richtige Zeile..
Ich bin total verwirrt und hoffe auf eure Hilfe,
Danke :)
Beste Grüße,
Frank

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Workbook...
16.08.2010 11:02:28
Matthias
Hallo
in DieseArbeitsmappe
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' aufruf wenn Tabellenblatt ausgewählt wird
Call zeile_setzen
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' aufruf wenn eine zelle markiert wird
Call zeile_merken_1
End Sub
Gruß Matthias
AW: Workbook...
16.08.2010 11:09:56
Frank
Hi Matthias,
das löst das Problem leider nicht, ersparrt nur doppelten code.
Was ich nicht nachvollziehen kann ist, dass in zeile_setzen() die Ausgabe korrekt ist, jedoch der Select Befehl nicht durchgeführt wird.
Grüße
Anzeige
Zelle oder Zeile ?
16.08.2010 11:21:00
Matthias
Hallo
Cells(i, 3) ist eine Zelle und keine Zeile
Public Sub zeile_setzen()
Rows(i).Select ' markieren der übernommenen zeile
End Sub
Gruß Matthias
AW: Zelle oder Zeile ?
16.08.2010 11:34:48
Frank
Hallo,
Cells erfüllt schon meine Ansprüche.
Die Spalte ist fest (spalte 3), die zeile variabel.
Die Zeile soll aus der letzten Zeile des zuletzt aktivierten Tabellenblattes übernommen werden.
Ich meine auch der Befehl an sich ActiveSheet.Cells(i, 3).Select sollte richtig sein. Jedenfalls funktioniert er bei mir in anderen Situationen.
Die Msgbox welche direkt über dem befehl steht (zu Testzwecken) gibt mir auch immer die Richtige Zeile (i) und auch das richtige Tabellenblatt (activesheet.name) an.
Nur die selection wird einfach nicht ausgeführt...
Grüße,
frank
Anzeige
Cells = Zelle
16.08.2010 11:38:21
{Boris}
Hi Frank,
es bleibt dabei: Die Cells-Eigenschaft bezieht sich auf EINE Zelle.
Deine Variable i enthält natürlich die Zeilennummer, daher wird Dir das in der Dummy-MsgBox auch richtig angezeigt. Aber
ActiveSheet.Cells(i, 3).Select sollte richtig sein
stimmt eben nicht. Entweder Rows verwenden oder die EntireRow-Eigenschaft auf die Cells-Eigenschaft anwenden:
ActiveSheet.Cells(i, 3).EntireRow.Select
Grüße Boris
das klappt doch ohne Probleme
16.08.2010 11:41:47
Matthias
Hallo
Erst wenn Du die Box quittierst springt der Cursor an die richtige Position.
Wenn Du es anders haben willst musst Du die beiden Zeilen tauschen
ActiveSheet.Cells(i, 3).Select ' markieren der übernommenen zeile
MsgBox ActiveSheet.Name & i 'testausgabe
Gruß Matthias
Anzeige
AW: das klappt doch ohne Probleme
16.08.2010 11:50:46
Frank
Hallo,
erstmal danke für die schnellen antworten :)
Zum Thema Zelle/ Zeile:
Sry für die Verwirrung. Also ich meine schon ZELLE, in einer bestimmten Zeile.
Es soll wirklich nur die Zelle markiert werden.
Zum eigentlichen Problem:
Hmm mein Problem ist aber, dass der Cursor NIE an die richtige Position springt.
Ob nun mit oder ohne MsgBox, auch egal wo die steht oder ob sie quittiert wird.
Die MsgBox war auch nur zum testen da, weil ich wissen wollte ob die Variablen richtig eingelesen werden.
Grüße,
frank
AW: das klappt doch ohne Probleme
16.08.2010 11:53:36
Frank
Hallo nochmal,
unglaublich oO
wenn ich den gleichen code in einem neuen Dokument verwende, funktioniert das ganze.
Nur nicht in meinem eigentlichen Dokument...
Anzeige
also erledigt, oder ? kwT
16.08.2010 11:59:30
Matthias
AW: also erledigt, oder ? kwT
16.08.2010 12:04:24
Frank
Ja irgendwie schon.
Also der Code scheint ja zu stimmen, da war die Frage umsonst (außer dass ich doppelten Quellcode sparen konnte)
Jetzt muss ich nur noch rausfinden, warum der Code nicht in meinem Dokument funktioniert.
Also vielen Dank!
Frank
AW: also erledigt, oder ? kwT
16.08.2010 12:21:40
Frank
Hallo,
ich hab den Fehler gefunden.
Ich habe noch eine funktion in meinem Dokument, zum Markieren der gefliterten Spalten:
Public Function AF_KRIT(Bereich As Range) As String
'Liest die Kriterien des Autofilters aus und listet diese in einer Zelle
'Als Bezug dient die erste Zelle nach dem Spaltentitel: AF_KRIT(A2)
Dim s_Filter        As String
s_Filter = ""
On Error GoTo Ende
With Bereich.Parent.AutoFilter
With .Filters(Bereich.Column - .Range.Column + 1)
s_Filter = .Criteria1
Select Case .Operator
Case xlAnd
s_Filter = s_Filter & " UND " & .Criteria2
Case xlOr
s_Filter = s_Filter & " ODER " & .Criteria2
End Select
End With
End With
Ende:
AF_KRIT = s_Filter
End Function

Ohne diese Funktion geht alles, mit ihr nicht.
Hat jmd eine Idee wie ich beide Funktionen (auto-filter markierung und o.g. zellen-markierung) gleichzeitig nutzen kann?
Grüße
frank
Anzeige
-erledigt!
16.08.2010 12:28:33
Frank
Hallo,
sorry für die vielen Beiträge. Jetzt geht endlich alles.
Die auto-filter funktion einfach ans Ende im Modul setzten.
Dann hoffe ich mal dass irgendjemand irgendwann wieder das gleiche Problem hat und nun hier eine Lsg sieht ;)
Danke und Grüße
doch nicht erledigt :(
16.08.2010 14:24:28
Frank
leider besteht das Problem immer noch.
Wie gesagt, sobald ich die Function AF_KRIT einfüge, geht das Selektieren der Zelle nicht mehr.
Aufgerufen wird die Sub zeile_setzen() noch. Die MsgBox wird korrekt angezeigt. Nur der Select ActiveSheet.Cells(zeile, 3).Select wird nicht durchgeführt.
Hat irgendjemand eine Idee in wiefern sich die funktion AF_KRIT und zeile_setzen() bzw.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' aufruf wenn Tabellenblatt ausgewählt wird
Call zeile_setzen
End Sub
beeinflussen?
Nochmals vielen Dank.
Anzeige
doch nicht erledigt :(
17.08.2010 16:42:55
MichaV
du musst den Haken bei "Frage noch offen" setzen damit jeder sieht dass sie ..noch offen ist :o)
Ich mach das mal für Dich.
AW: doch nicht erledigt :(
22.08.2010 13:13:53
F1
Selectieren u.ä. geht mit Funktionen nicht!
AW: doch nicht erledigt :(
22.08.2010 14:19:18
Frank
Doch es geht. Problem ist behoben. Das Problem lag darin, das ich die Funktion AF_KRIT innerhalb der Bedingten Formatierung aufgerufen habe.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige