Registriert seit: 25.08.2016
Version(en): Office 2010
26.08.2016, 08:08
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2016, 08:08 von Steffen90.)
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 25.08.2016
Version(en): Office 2010
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.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 25.08.2016
Version(en): Office 2010
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.