Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zell Koordinaten verwenden in "range- Funktion"

Forumthread: Zell Koordinaten verwenden in "range- Funktion"

Zell Koordinaten verwenden in "range- Funktion"
28.08.2014 14:07:42
Karsten
Hallo liebe Excel Freunde,
ich suche auf einem Arbeitsblatt nach einem bestimmten Namen im Bereich A1 - A50000. Set SucheQ = Sheets(Blatt7).Range("A1:A50000").Find(What:=Query)
SucheQ.Offset(1, 0).Select
Nun kann man die Zell Koordinaten der selektierten Zelle auslesen mit:
Zeile = ActiveCell.Row
Spalte = ActiveCell.Column
Jetzt kennt EXCEL die Zelladresse der Zelle auf dem Blatt. Aber wie kann man nun diese Adresse (Zeile, Spalte) mit der Range Funktion verwenden um "arNamen" zu füllen, so wie Beispiel mit festgelegter Adresse A5.
arNamen = .Range(.Range("A5"), .Range("A5").End(xlToRight))
Ich habe versucht mit arNamen = .Range.Cells(Zeile, Spalte) das funktiniert aber nicht. Könnt Ihr mir hlefen? Danke im Vorraus!
Gruß Karsten

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zell Koordinaten verwenden in "range- Funktion"
28.08.2014 14:20:31
yummi
Hallo Karsten,

Function WandleZahlInBuchstaben(ByVal iWert As Integer) As String
Dim Spaltenbuchstabe As String
Spaltenbuchstabe = Right(Columns(iWert).Address, _
Len(Columns(iWert).Address) - _
InStrRev(Columns(iWert).Address, "$"))
WandleZahlInBuchstaben = Spaltenbuchstabe
End Function

Aufruf: Buchstabe = WandleZahlINBuchstaben(Spalte)
Gruß
yummi

Anzeige
Hier ist wohl mal wieder der vorgestellte ...
28.08.2014 15:38:09
Luc:-?
…Lösungsweg zum Problem geworden, Karsten,
und verdeckt das eigentliche Problem! Du hast doch schon ein Range-Objekt (wie Hary ganz richtig bemerkte) mit allen seinen Eigenschaften. Jetzt kannst du entweder gleich den Wert der mit Offset ermittelten FolgeZelle in dein Array übernehmen oder, falls es der ganze Folgebereich sein soll, sein Ende nach rechts ermitteln und dann alles übernehmen:
arNamen = .Range(SucheQ.Offset(1, 0), SucheQ.End(xlToRight))
Warum willst du da erst die Adresse ermitteln? Die braucht das Pgm nicht, denn es hat ja schon eine Referenz des Objekts! Was du vorhast, ist quasi „von hinten durch die Brust geschossen“… ;-]
Gruß, Luc :-?

Anzeige
AW: Zell Koordinaten verwenden in "range- Funktion"
28.08.2014 14:58:29
hary
Moin Karsten
Verstehe nicht ganz was du moechtest.
Mit SucheQ hast du doch ein Rangeobjekt. Da kannst du die Adresse direkt auslesen.
Dim SucheQ As Range
Dim arNamen
Set SucheQ = Sheets("Blatt7").Range("A1:A50000").Find(What:="a")
arNamen = SucheQ.Offset(1, 0).Address

gruss hary

Anzeige
AW: Zell Koordinaten verwenden in "range- Funktion"
30.08.2014 12:22:34
Karsten
Hallo Hary, danke für den Hinweis, ok vielleicht habe ich mich nicht vollständig und gut genug ausgedrückt. Ich möchte mit arNamen nicht nur den Inhalt dieser selektierten Zelle auslesen sondern weitere Zellen rechts von diesem Punkt - deshalb .End(xlToRight). Es kommen nach rechts ca. 20 gefüllte Zellen die alle als Referenz der Spalten Überschriften für MS Access dienen. In MS Access soll dann eine Tabelle gefüllt werden mit all den Werten die unter diesem Bereich kommen. Hier das weitere Marco welches ich reingestellt habe:
https://www.herber.de/bbs/user/92327.txt
Ich hoffe ich habe mich jetzt besser ausgedrückt - sorry. Aber vielleicht mache ich das auch alles viel zu kompliziert und es git eine bessere Idee wie man Daten für variable Bereiche die immer die gleichen Überschriften haben nach MS Access überträgt. ich dachte über die SucheQ wäre das eine passable Lösung.
Gruß Karsten

Anzeige
AW: Zell Koordinaten verwenden in "range- Funktion"
31.08.2014 16:37:30
Karsten
Hallo hary, jetzt habe ich eine Lösung gefunden ist ja eigentlich gar nicht so schwer man muss nur die Zusammenhänge verstehen ;-)
Danke Euch allen die mir bei der Lösung geholfen haben. Gruß Karsten
Sub TEST02_DB_import()
Dim ADOC As ADODB.Connection
Dim DBS As ADODB.Recordset
Dim lngZeile As Long, intIndex As Integer
Dim ZelleA As Variant
Dim ZelleB As Variant
Dim ZeileB As Variant
Dim arNamen As Variant
Dim SucheQ As Variant
On Error GoTo Fehler
Set ADOC = New ADODB.Connection 'ADOC - Provider für Access Verbindung. Notwendigkeit der  _
Aktivierung von ActiveX Dataobject x.y Library unter:
'Extras-> Verweise-> Microsoft ActiveX Dataobject x.y  _
Library. Nimm immer die mit der höchsten Versionsnummer!!!
With ADOC
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open "C:\Users\Karsten\Desktop\Documents\Excel\Beispiele\EMEA_MonthlyReport_HB.mdb"
End With
Set DBS = New ADODB.Recordset
DBS.Open "tbl_raw_data", ADOC, adOpenKeyset, adLockOptimistic
With Sheets("Importliste")
Set SucheQ = Sheets("Importliste").Range("A1:A50000").Find(What:="test") 'Suche der  _
Anfangsposition des Querys auf dem Arbeitsblatt
ZelleA = SucheQ.Offset(1, 0).Address
ZelleB = SucheQ.Offset(2, 0).Address
ZeileB = ActiveCell.Offset(1, 0).Row
arNamen = .Range(.Range(ZelleA), .Range(ZelleA).End(xlToRight))
For lngZeile = ZeileB To .Range(ZelleB).End(xlDown).Row
DBS.AddNew
For intIndex = 1 To UBound(arNamen, 2)
DBS.Fields(arNamen(1, intIndex)) = .Cells(lngZeile, intIndex).Value
Next
DBS.Update
Next
End With
Fehler:
If Err.Number Then MsgBox Err.Description, , Err.Number
Set DBS = Nothing
'DBS.Close
ADOC.Close
Set ADOC = Nothing
End 

Sub

Anzeige
AW: Zell Koordinaten verwenden in "range- Funktion"
28.08.2014 15:44:28
Daniel
Hi
wenn du in VBA eine Einzelzelle ansprechen willst und die Spaltennummer bekannt ist, dann _ funktioniert das direkt mit

Cells(ZeilenNummer, SpaltenNummer)
, ohne Range davor.
Gruß Daniel
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Zell Koordinaten verwenden in der Range-Funktion


Schritt-für-Schritt-Anleitung

  1. Suche nach einem bestimmten Wert: Erstelle ein Range-Objekt für den Bereich, in dem du suchen möchtest, z.B. A1:A50000.

    Dim SucheQ As Range
    Set SucheQ = Sheets("Blatt7").Range("A1:A50000").Find(What:=Query)
  2. Auslesen der Zellkoordinaten: Verwende ActiveCell.Row und ActiveCell.Column, um die Zeile und die Spalte der gefundenen Zelle zu ermitteln.

    Dim Zeile As Long
    Dim Spalte As Long
    Zeile = ActiveCell.Row
    Spalte = ActiveCell.Column
  3. Verwendung der Koordinaten in der Range-Funktion: Mit den ermittelten Koordinaten kannst du nun auf die Zelle zugreifen, z.B.:

    arNamen = Sheets("Blatt7").Cells(Zeile, Spalte)
  4. Arbeiten mit dem Offset: Wenn du weitere Zellen rechts von der gefundenen Zelle einbeziehen möchtest, kannst du Offset und End verwenden:

    arNamen = Sheets("Blatt7").Range(SucheQ.Offset(1, 0), SucheQ.End(xlToRight))

Häufige Fehler und Lösungen

  • Fehler beim Auslesen der Adresse: Wenn du versuchst, die Adresse direkt aus ActiveCell auszulesen, kann es zu Verwirrungen kommen. Stattdessen solltest du direkt auf das Range-Objekt zugreifen.

  • Falsche Verwendung von Offset: Achte darauf, dass du Offset korrekt anwendest und keine falschen Zeilen- oder Spaltenwerte übergibst.

  • Cells(x, y) funktioniert nicht: Wenn du versuchst, Cells(Zeile, Spalte) zu verwenden, stelle sicher, dass Zeile und Spalte tatsächlich die richtigen Koordinaten besitzen.


Alternative Methoden

  • Direkte Verwendung von Cells: Anstelle von Range kannst du die Cells-Methode direkt verwenden, um Zellen zu adressieren.

    Dim Wert As Variant
    Wert = Cells(Zeile, Spalte).Value
  • Koordinaten umwandeln: Um die Adresse einer Zelle in Koordinaten umzuwandeln, kannst du eine Funktion wie diese nutzen:

    Function WandleZahlInBuchstaben(ByVal iWert As Integer) As String
        Dim Spaltenbuchstabe As String
        Spaltenbuchstabe = Right(Columns(iWert).Address, Len(Columns(iWert).Address) - InStrRev(Columns(iWert).Address, "$"))
        WandleZahlInBuchstaben = Spaltenbuchstabe
    End Function

Praktische Beispiele

  • Beispiel für die Verwendung von Find und Offset:

    Dim SucheQ As Range
    Set SucheQ = Sheets("Blatt7").Range("A1:A50000").Find(What:="Suchbegriff")
    If Not SucheQ Is Nothing Then
        Dim arNamen As Variant
        arNamen = Sheets("Blatt7").Range(SucheQ.Offset(1, 0), SucheQ.End(xlToRight))
    End If
  • Datenübertragung nach MS Access: Hier ein Beispiel, wie du die gefundenen Zellen in eine Access-Datenbank übertragen kannst:

    ' Verbindung zur Access-Datenbank herstellen
    Set ADOC = New ADODB.Connection
    ADOC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dein_pfad_zur_datenbank;"

Tipps für Profis

  • Nutze die Funktion Cells(x, y) effektiv, um gezielt auf Zellen zuzugreifen, ohne immer die Range-Syntax verwenden zu müssen.

  • Vermeide unnötige Berechnungen: Wenn du bereits ein Range-Objekt hast, arbeite direkt damit, anstatt die Zelladresse nochmals zu ermitteln.

  • Kombiniere die Methoden: Eine Kombination aus Cells, Range und Find kann dir helfen, komplexe Abfragen effizient zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die Adresse einer Zelle in Koordinaten umwandeln?
Verwende eine Funktion, die den Spaltenindex in den entsprechenden Buchstaben umwandelt. Siehe das Beispiel WandleZahlInBuchstaben.

2. Was tun, wenn Find nichts zurückgibt?
Überprüfe, ob der Suchbegriff korrekt ist und ob sich der Wert im angegebenen Bereich befindet. Verwende auch If Not SucheQ Is Nothing Then, um sicherzustellen, dass du mit einem gültigen Range arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige