Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

Namen finden

Namen finden
22.06.2013 17:43:44
Marcus
Hallo,
in u.st.Datei geht es darum mit der nach rechts- bzw. nach links-Taste den jeweiligen Namen analog der Seite "Stundenplan" zu finden. Der Makro (ich habe ihn dankenswerter Weise von einem Excelspezie aus dem Forum) macht das auch wunderbar. Leider funktioniert das nur, wenn sich die akt. Zelle in Zeile 1 befindet. Ich benötige die Suche aber aus jeder beliebigen Zeile heraus.
Nun habe ich schon das deaktiviert:
'Set isect = Application.Intersect(Rows(1), Target) 'nur etwas tun wenn es in Zeile 1 passiert
'If isect Is Nothing Then
Und hier geändert, aber ohne Erfolg.
Range(LetzteZelle).Offset(0, 1).Address = Target.Address Then Call Namen(Range(LetzteZelle).Value, 1)
If Target.Column "1" Then If Range(LetzteZelle).Offset(0, -1).Address = Target.Address Then Call Namen(Range(LetzteZelle).Value, -1)
Kann mir den Code jemand entsprechend abändern? Besten Dank.

Die Datei https://www.herber.de/bbs/user/85960.xls wurde aus Datenschutzgründen gelöscht


Gruß Marcus

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Namen finden klappt so erst, wenn schon ...
22.06.2013 19:26:33
Luc:-?
…einmal ein Name gefunden wurde, Marcus;
ansonsten solltest du Option Explicit (am Anfang des Moduls notieren!) verwenden (VBE-Menü Extras - Optionen - Variablendeklaration erforderlich anhaken!) und deshalb die Deklarationen der Subroutine Name um i As Long, j As Long, suche As Range ergänzen.
Ob das alles so fktioniert, wie du es willst, mag ich nicht beurteilen.
Gruß Luc :-?

AW: Namen finden klappt so erst, wenn schon ...
22.06.2013 21:40:43
Marcus
Hallo Luc,
ich hab es so gemacht, wie ich es verstanden habe.
https://www.herber.de/bbs/user/85961.xls
Nun gebt es doppelte Deklarationen, bei denen ich nicht weiter weiß....
Keine Ahnung wie es richtig aussehen muss.
Gruß
Marcus

Anzeige
Du hättest die zusätzl Deklarationen ...
22.06.2013 23:56:23
Luc:-?
…so wie sie dastanden anstelle von nur i eintragen sollen, Marcus,
denn das stand ja schon da (allerdings ohne Typ, was Variant bedeutet) und verursacht jetzt den Doppeldeklarationsfehler. Das ist dir nicht aufgefallen…? :-|
Luc :-?

AW: Du hättest die zusätzl Deklarationen ...
23.06.2013 08:40:23
Marcus
Hallo Luc,
ich verstehe beim besten Willen einfach nicht was du meinst (zusätzliche Deklarationen). Dein Satz ist a komisch und b ich hab zu wenig Horizont um den Rest erahnen zu können.
...und von nur i. Also noch etwas anderes dazu?
Natürlich fällt mir das nicht auf. Sonst würde hier ich nicht ein Haufen Fragen stellen.
Kannst du ganz unkompliziert den Code so ändern, wie du meinst, und ihn mal hinschreiben oder alles hochladen Das ginge schneller als diese Satzklauberei. Danke.
Gruß
Marcus

Anzeige
AW: Namen finden
23.06.2013 09:04:40
Oberschlumpf
Moin Moin alle :-)
@Luc Dein Satz ist a komisch
Das Gefühl hab ich auch manchmal ;-)
(du könntest oft weniger "geschwollen" mehr + besser erklären - ok, ok, natürlich ist es deine und jeder anderer Entscheidung, wie man sich artikuliert - das muss jeder akzeptieren. Aber trotzdem ist es erlaubt, Meinungen dazu zu äußern :-))
Hi Marcus
Ich hab leider gar keinen Plan, was du in der Datei erreichen willst. Daher kann ich auch nur helfen, was den Fehler Mehrfachdeklaration betrifft.
Im Code steht:
Sub Namen(strName As String, dPos As Double)
' StrName = Wert der Letzten zelle, dPos ist entweder 1 oder -1
Dim i As Long
Dim j As Long
Dim suche As Range
Dim varNamen As Variant, strNamen As String, dName As Double, i
Und mit Mehrfachdeklaration ist gemeint, dass du ein und denselben Variablennamen mehrmals mit Dim deklariert hast.
Erkennst du, um welche Variable es sich handelt?
Nein? OK, es handelt sich um i - deswegen Fett und größer :-)
Lösch also eines der beiden i's, am besten das untere, wiederhole das Makro, und du wirst sehen, dass nun kein Fehler mehr vorhanden ist.
Aber nix desto trotz. Ich verstehe absolut nicht, welchen Sinn dein Vorhaben hat, bzw was du erreichen möchtest.
Das soll nicht abwertend sein. Aber leider kann ich nicht weiter helfen.
Ciao
Thorsten

Anzeige
AW: Namen finden
23.06.2013 10:00:12
Marcus
Hallo Thorsten,
danke für deinen Beistand.
Jetzt geht es zumindest ohne Fehlermeldung.
Nun hab ich die Stundenplanseite bis auf 4 Namen abgespeckt, damit es sich leichter hinter den Sinn kommen läßt.

Die Datei https://www.herber.de/bbs/user/85962.xls wurde aus Datenschutzgründen gelöscht


Wenn du in Blatt Arbeitsliste die Pfeil nach Rechts-Taste drückst, springt die akt. Zelle von "Albert" zu "Berta", weil "Berta" im Blatt Stundenplan nach "Albert" kommt. Danach kommt "Fritz" dann "Micha". Zu denen geht jeweils die akt. Zelle. So solls auch sein.
Mit der Pfeil nach Links-Taste geht alles genauso, nur rückwärtz.
Das Problem ist, dass der richtige Code nur dann abläuft, wenn sich die aktive Zelle in Zeile 1 befindet. Entweder muß bei drücken der Pfeil nach ...-Taste die akt. Zelle zu beginn gleich nach ganz oben gehen (was ich mir überhaupt nicht vorstellen kann, sie geht ja in irgendeine horizontale Richtung) oder die Befehle müssen anders lauten.
Gruß
Marcus

Anzeige
AW: Namen finden
23.06.2013 10:01:59
Marcus
Hallo Thorsten,
danke für deinen Beistand.
Jetzt geht es zumindest ohne Fehlermeldung.
Nun hab ich die Stundenplanseite bis auf 4 Namen abgespeckt, damit es sich leichter hinter den Sinn kommen läßt.

Die Datei https://www.herber.de/bbs/user/85962.xls wurde aus Datenschutzgründen gelöscht


Wenn du in Blatt Arbeitsliste die Pfeil nach Rechts-Taste drückst, springt die akt. Zelle von "Albert" zu "Berta", weil "Berta" im Blatt Stundenplan nach "Albert" kommt. Danach kommt "Fritz" dann "Micha". Zu denen geht jeweils die akt. Zelle. So solls auch sein.
Mit der Pfeil nach Links-Taste geht alles genauso, nur rückwärtz.
Das Problem ist, dass der richtige Code nur dann abläuft, wenn sich die aktive Zelle in Zeile 1 befindet. Entweder muß bei drücken der Pfeil nach ...-Taste die akt. Zelle zu beginn gleich nach ganz oben gehen (was ich mir überhaupt nicht vorstellen kann, sie geht ja in irgendeine horizontale Richtung) oder die Befehle müssen anders lauten.
Gruß Marcus
PS. hatte vergessen das Kontrollkästchen anzuhaken.

Anzeige
AW: Namen finden
23.06.2013 11:42:24
Matthias
Hallo Marcus
Das Problem ist, dass der richtige Code nur dann abläuft, wenn sich die aktive Zelle in Zeile 1 befindet
Das stimmt ja so nicht.
Außerdem hast Du es ja schon selbst kommentiert:
' wenn LetzteZelle keinen Wert hat und die aktuelle Zelle nicht leer ist aktuelle Adresse zuweisen
Genau darum hast Du das Gefühl das der ode nicht läuft.
Er läuft aber. Genau bis zum Exit Sub
If LetzteZelle = "" Then
' wenn LetzteZelle keinen Wert hat und die aktuelle Zelle nicht leer ist aktuelle Adresse  _
zuweisen
If Target.Value = "" Then Exit Sub
... denn LetzteZelle hat keinen Wert und Target.value ist auch leer
Schreib doch mal einen vorhandenen Namen in eine andere Zeile und drücke dann eine Pfeiltaste.
Dann klappt alles wunderbar.
Gruß Matthias

Anzeige
AW: Namen finden
25.06.2013 08:26:58
Marcus
Hallo Matthias,
Entschuldigung, ich hab dich vergessen. Bin wohl etwas durcheinander gekommen.
Gruß
Marcus

Entschuldigung angenommen :-) kwT
26.06.2013 00:19:54
Matthias

AW: Namen finden
23.06.2013 12:06:12
Franc
Hi ^^
Da ich noch nicht dazu gekommen bin mir die Originaldatei vorzunehmen hier der Code wie es funktioniert.
Nicht wundern - das noch die alte Beispieldateidatei.
Egal wo du bist es geht.
habe dir 3 Optionen im Makro gelassen was passieren soll wenn er es findet.
Das findest du im Makro "Namen" fast ganz unten
Wenn du eine andere Möglichkeit wählst vergiss nicht den Quelltext der vorherigen Möglichkeit mit ' auszukommentieren.
Das muss ganz oben ins Tabellenblatt
Public LetzteZelle As String
Den Code aus SelectionChange am besten ganz am Anfang in dein SelectionChange kopieren und deine Anweisungen für Benutzerwechsel raushauen.
Makro "Namen" auch in den Code vom Tabellenblatt (ganz unten unterm letzten Modul - Hauptsache im Tabellenblatt Code)
https://www.herber.de/bbs/user/85964.xls

Anzeige
AW: Namen finden
23.06.2013 13:06:03
Marcus
Hallo Franc,
danke vorab. Ich werde mich später damit beschäftigen - hab jetzt wenig Zeit.
Gruß Marcus

AW: Namen finden
23.06.2013 12:22:40
fcs
Hallo Marcus,
100% hab ich das gewünschte Verhalten bei Links-Rechst-Pfeil noch nicht verstanden.
Meine Vermutung jetzt:
1. In der Arbeitsliste stehen die Namen nur in der Zeile 1
2. Die aktive Zelle ist eine beliebige Zelle unterhalb der Namen.
3. Jetzt wählst du mit den Pfeiltasten oder der Maus die Zelle links oder rechts der aktiven Zelle.
4. Jetzt soll das Makro zum Namen in Zeile 1 den Folgenamen gemäß Suchrichtung im Stundenplan suchen und in der aktiven Zeile die Zelle selektieren in der in Zeile 1 der gefundene Name steht.
Ich hab die Makros mal in diese Richtung angepasst. Der Einfachheit halber wird nicht die letzte selektierte Zelladresse sondern Zellspalte verarbeitet.
Gruß
Franz
Textdatei mit angepassten Makros
https://www.herber.de/bbs/user/85965.txt

Anzeige
AW: Namen finden
23.06.2013 16:40:42
Marcus
Hallo Franz,
du hast alles richtig verstanden und dein Code funktioniert auch entsprechend richtig. Danke.
Allerdings tauchen im Stundenplan manchmal Namen auf, die auf Seite Arbeitsbericht noch nicht erscheinen. Diese müssten ignoriert und dafür der nächste gültige Name genommen werden. Im Moment wird der Name eins zurück wieder angewählt.
Gruß
Marcus

AW: Namen finden
23.06.2013 17:35:55
fcs
Hallo Marcus,
ich hab die Prozdur "Namen" angepasst.
Beim suchen der Namen im Stundenplan wird jetzt zusätzlich geprüft ob der Name in Zeile 1 der Arbeitsliste vorhanden ist. Nur Namen, die in Zeile 1 vorhanden sind, werden in die weiter zu verarbeitende Liste übernommen.
Gruß
Franz.
hier die angepasste Prozedur "Namen":
https://www.herber.de/bbs/user/85975.txt

Anzeige
Besten Dank
23.06.2013 20:00:36
Marcus
Hallo Franz,
es läuft wie ich es brauche.
Ich habe trotzdem die Datei noch mal hochgeladen. Mit Strg+Leertaste kann ich schnell zwischen beiden Seiten wechseln. Nun hat man schon so viel für mich getan das ich mich kaum traue noch zu fragen...
Ich bräuchte, dass es ganz perfekt ist noch folgendes: Bei Wechsel zum Stundenplan soll die aktive Zelle identisch mit dem Namen sein, der in der Arbeitsliste verlassen wurde.
Z.B, wenn ich mich in der Arbeitsliste in Spalte "Micha" befinde und mit Strg+Leertaste wechsele, soll die aktive Zelle ebenfalls auf Micha stehen.
Umgekehrt brauche ich das nicht.
https://www.herber.de/bbs/user/85979.xls
Gruß
Marcus

Besten Dank auch für ...
23.06.2013 23:14:47
Matthias
Hallo
Besten Dank auch für Dein ignorantes Verhalten mir gegenüber :-(
und Tschüß

AW: Besten Dank
24.06.2013 23:55:41
fcs
Hallo Marcus,
hier die erforderlichen Ergänzungen, damit im Blatt "Stundenplan" die Zelle mit dem Namen angesteuert wird.
Du solltest bei Fragen hier im Forum aber auch immer auf die Antworten aller User reagieren und dich bedanken oder kurz mitteilen warum etwas nicht passt/funktioniert. Das gebietet schon die Höflichkeit. Immerhin erarbeitet hier jemand für dich in seiner/ihrer Freizeit eine Lösung für dich.

Gruß
Franz
'Neues Makro unter Tabelle1 (Stundenplan)
Private Sub Worksheet_Activate()
Call Tabelle2.Name_Finden(wks:=Me)
End Sub
'Zusätzliches Makro unter Tabelle2 (Arbeitsliste)
Sub Name_Finden(wks As Worksheet)
Dim Zelle As Range
If LetzteSpalte  0 Then
Set Zelle = wks.Cells.Find(what:=Me.Cells(1, LetzteSpalte).Value, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Zelle Is Nothing Then
Application.Goto Reference:=Zelle
End If
End If
End Sub

AW: Besten Dank
25.06.2013 08:43:35
Marcus
Hallo Franz,
ich habe zwischenzeitlich einen anderen Code gefunden/angepasst, der sogar funktioniert.
Mit deinem bin ich beim kurzen Probieren nicht klar gekommen (es liegt bestimmt an mir).
Gruß
Marcus

Naja, mein lieber Thorsten, dass ist dann ...
23.06.2013 21:30:04
Luc:-?
…aber dein Problem… ;-)
Allerdings hast du doch ganz wundervoll demonstriert, wie einfach meine Bemerkung zu verstehen gewesen ist!
Muss ich unbedingt für absolute VBA-Laien schreiben? Die sollen sich gefälligst wie WF mit XlFmln begnügen und sich nicht an VBA versuchen, wenn sie nicht mal einen DoppelDeklarationsfehler finden können. Da ist eine künftige Katastrophe ja geradezu vorprogrammiert…!
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige