Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Einzelne Zellen-Werte aus gefilterter Zeile
#1
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
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
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
Antworten Top
#5
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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste