Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zell Koordinaten verwenden in "range- Funktion"

Betrifft: Zell Koordinaten verwenden in "range- Funktion" von: Karsten
Geschrieben am: 28.08.2014 14:07:42

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

  

Betrifft: AW: Zell Koordinaten verwenden in "range- Funktion" von: yummi
Geschrieben am: 28.08.2014 14:20:31

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


  

Betrifft: Hier ist wohl mal wieder der vorgestellte ... von: Luc:-?
Geschrieben am: 28.08.2014 15:38:09

…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 :-?


  

Betrifft: AW: Zell Koordinaten verwenden in "range- Funktion" von: hary
Geschrieben am: 28.08.2014 14:58:29

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


  

Betrifft: AW: Zell Koordinaten verwenden in "range- Funktion" von: Karsten
Geschrieben am: 30.08.2014 12:22:34

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


  

Betrifft: AW: Zell Koordinaten verwenden in "range- Funktion" von: Karsten
Geschrieben am: 31.08.2014 16:37:30

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 



  

Betrifft: AW: Zell Koordinaten verwenden in "range- Funktion" von: Daniel
Geschrieben am: 28.08.2014 15:44:28

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