online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon bokap1975 vom 27.02.2020, 08:21 Options

Curser in Richtige Spalte springen. VBA

hallo zusammen.

ich habe eine Tabell mit sehr vielen Spalten in denen ich immer wieder was eintragen muß. diese Spalten haben in zeile A Überschriften. z. B. Fenster, Rahmen, Türen usw. Jetzt wäre es sehr hilfreich, dass wenn ich in die Zelle A2 z.B Türen eingebe ich direkt in die Spalte springe wo die Überschrift entsprechend ist. Am besten noch in die nächste freie Zeile der gesamten Tabelle.

Wäre super wenn mir jemand hilft.


Antwort schreiben

Antwort 1 von bokap1975 vom 27.02.2020, 14:55 Options

hallo,

habs schon so in etwa selbst raus bekommen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A2") = "Fenster" Then Range("C10").Select

End Sub

und so weiter.

grüße boris

Antwort 2 von meinTipp vom 28.02.2020, 09:16 Options

Hallo Boris,
versuche es damit:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rgWo As Range
Dim loZeile, loSpalte As Long

If Target.Count > 1 Or Target.Address <> "$A$2" Then Exit Sub
Set rgWo = Rows(1).Find(What:=Range("A2").Value, After:=Range("A1"), LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
If rgWo Is Nothing Then
    MsgBox Range("A2").Value & " wurde in den Spaltenüberschriften nicht gefunden"
Else
    loSpalte = rgWo.Column
    loZeile = Cells(Cells.Rows.Count, loSpalte).End(xlUp).Row
    Cells(loZeile + 1, loSpalte).Select
End If

End Sub


Gruss Rolf

Antwort 3 von Bokap1975 vom 28.02.2020, 09:45 Options

Hi Rolf,

habs ausprobiert. Funktioniert aber nicht. Fehler beim debuggen schreibt er mir.????

Viele Grüß Boris

Antwort 4 von Bokap1975 vom 28.02.2020, 09:51 Options

sorry.

Fehler war - Laufzeitfehler 448.

beim debuggen war folgender bereich markiert.

Set rgWo = Rows(1).Find(What:=Range("A2").Value, After:=Range("A1"), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

Viele Grüße boris

Antwort 5 von meinTipp vom 28.02.2020, 10:15 Options

das kann mit deiner Excel-Version zu tun haben. Unter 2003 funktioniert es.
Zeichne mal ein Makro auf wenn du im Arbeitsblatt die Suchfunktion benutzt. Schau mal nach welches benannte Argument bei dir nicht vorhanden ist.
Ich tippe mal auf Searchformat.
Lasse dieses Argument einfach weg.
Also so:
Set rgWo = Rows(1).Find(What:=Range("A2").Value, After:=Range("A1"), LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False)

Antwort 6 von bokap1975 vom 28.02.2020, 10:57 Options

hi rolf,

so ist´s super.

vielen dank
boris

Antwort 7 von gast123 vom 28.02.2020, 12:53 Options

hi all

ueber die findmethode waere ein einzeiler ausreichend,ohne objekte ohne variablen

gruss gast123

Antwort 8 von meinTipp vom 28.02.2020, 19:48 Options

@gast123
ja dann lass mal den Code sehen.
Das man den Code in der "Else" Bedingung in eine Zeile pressen kann, ist unumstritten. Die Lesbarkeit leidet doch sehr darunter und macht es nicht so VBA-Erfahrenen sehr schwer den Code nachzuvollziehen.
Ich bin jetzt sehr gespannt auf deinen Code (natürlich mit dem Abfangen des Fehlers, wenn nichts gefunden wurde).

Mit freundlichen Grüssen
Rolf

Antwort 9 von meinTipp vom 28.02.2020, 19:54 Options

Nachtrag:
Natürlich die Find-Methode nicht mehr als einmal verwenden!
Das mach jedes Makro langsamer gegenüber einer Zwischenspeicherung in einer Range.

Ähnliche Themen

2 Nr. in tabelle vergleichen und lieferant in tabelle 1 einfügen
SteffenL  30.10.2007 - 39 Hits - 15 Antworten

vba in Code-Zeile "springen"
eselsaffe  05.10.2007 - 143 Hits - 4 Antworten

Access - Mit VBA Spalte sortieren
maxim66  08.11.2007 - 151 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026