Clever-Excel-Forum

Normale Version: Einzelne Zellen-Werte aus gefilterter Zeile
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

folgendes Problem:

ich möchte gerne in ein vorhandenes Makro eine neue Zellen-Wert-Erfassung einbauen. Momentan ist es so, dass mein Makro jeweils die Zelle in der Tabelle ansteuert, die ich vorgebe, also so:
Zitat:TestVal = Worksheets("Tabelle1").Range("A2").Value
Mein Traum ist es, dass das Makro einen Spaltenwert in einer Zeile ansteuert, die ich vorher manuell gefiltert habe. Ich filtere also nach einem beliebigen Wert und mein Makro gibt mir dann den Wert den er gerade in Spalte D,E,F und G findet aus. 

Wisst ihr, wie ich das in VBA umsetze?


Danke für eure Mithilfe.


Liebe Grüße

Steffen
Hallo Steffen,

sowas?
Sub ErsteGefilterteZeile()
 Dim oWs As Worksheet
 Dim rngF As Range, rngZ As Range
 Set oWs = Worksheets("Tabelle1")
 If oWs.AutoFilterMode Then
   Set rngF = oWs.AutoFilter.Range
   With rngF.SpecialCells(xlCellTypeVisible)
     If .Rows.Count > 1 Or .Areas.Count > 1 Then
       Set rngZ = rngF.Resize(rngF.Rows.Count - 1).Offset(1)
       Set rngZ = rngZ.SpecialCells(xlCellTypeVisible).Rows(1)
       rngZ.Cells(4).Select  'Spalte D ansteuern
       'oder
       rngZ.Cells(7).Select  'Spalte H ansteuern
     End If
   End With
 End If
End Sub
Gruß Uwe
Hallo Uwe,

vielen Dank für deine Rückmeldung.
Ich hab deinen Vorschlag gerade versucht bei mir einzubauen, allerdings muss ich irgendetwas falsch gemacht haben, da die Ausführung dann doch etwas hapert.

Zur Anwendung: Das Ziel ist es eine ausfüllbare PDF zu befüllen, mit den Daten der gefilterten Zeile. Ich hatte es schon soweit, dass ich bestimmte Spalten-Werte übertragen konnte, aber nicht gefilterte.

Wenn ich versuche, das was du geanwortet hast, bei mir einzubauen, dann sieht das ganze so aus:

Zitat:Sub SubmitoPDF()
    Dim pdfPath As String
    Dim TestVal As String
    Dim oWs As Worksheet
    Dim rngF As Range, rngZ As Range
    'Dim pdDoc As Acrobat.CAcroPDDoc
    'Dim avDoc As Acrobat.CAcroAVDoc
    'Dim acroApp As Acrobat.CAcroApp
    Dim pdDoc As Object
    Dim avDoc As Object
    Dim acroApp As Object
    Dim jsObj As Object
    Dim fieldObj As Object
    
    ' hier liegt die Test Datei
    pdfPath = "C:\Programs\file.pdf"
    Set acroApp = CreateObject("AcroExch.App")
    Set avDoc = CreateObject("AcroExch.avDoc")
    acroApp.Show
    ' doc öffnen
    If avDoc.Open(pdfPath, "PDF_erstellen") Then
        Set pdDoc = avDoc.GetPDDoc()
        Set jsObj = pdDoc.GetJSObject()
        ' Zugriff auf das Feld
        Set fieldObj = jsObj.getField("Feld_in_PDF")
        ' ... und wert setzen
        Set oWs = Worksheets("Tabelle1")
        If oWs.AutoFilterMode Then
        Set rngF = oWs.AutoFilter.Range
        With rngF.SpecialCells(xlCellTypeVisible)
        If .Rows.Count > 1 Or .Areas.Count > 1 Then
       Set rngZ = rngF.Resize(rngF.Rows.Count - 1).Offset(1)
       Set rngZ = rngZ.SpecialCells(xlCellTypeVisible).Rows(1)
       rngZ.Cells(1).Select
           End If
   End With
 End If
        ' aufräumen
        Set fieldObj = Nothing
        Set pdDoc = Nothing
    End If
    Set avDoc = Nothing
    Set acroApp = Nothing
End Sub
Wenn ich es starte, öffnet sich auch die PDF, allerdings ohne eingetragenen Werte.
Hallo Steffen,

mein Code überträgt ja auch keine Werte, sondern selektiert eine Zelle in der gefundenen Zeile.
Was Du dann mit rngZ.Cells(x) machen willst, wusste ich ja nicht.

Die Reihenfolge ist in Deinem Code vielleicht auch nicht "optimal". Das Ermitteln der Zeile sollte besser vor dem Öffnen des Dokumentes erfolgen.
Und dann wahrscheinlich so:

fieldObj  = rngZ.Cells(4).Value

Gruß Uwe
genau, ich dachte, es würde reichen, den Selektiercode einfach in den Übertragungscode einzubauen.

Leider funktioniert es nicht, wenn ich die Zeile mit der von dir geposteten Zeile ersetze, dann komm diese Fehlermeldung:

"Objekt unterstützt diese Eigenschaft oder Methode nicht"

Leider bin ich nicht wirklich bewandert, was VBA angeht, deswegen bin ich gerade sehr ratlos.