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.

Makro zickt
#21
Na, auf jeden Fall läuft das Makro jetzt so wie es soll.

Eine Frage habe ich aber noch.

Mit der Formel

=(INDEX(A:A;MIN(WENN(TEILERGEBNIS(3;INDIREKT("a"&ZEILE(2:125)))*ZEILE(2:125)>0;TEILERGEBNIS(3;INDIREKT("A"&ZEILE(2:125)))*ZEILE(2:125)))))

Frage ich das korrekte Datum ab und er schreibt mir hier auch zum Beispiel
21.04.2021 in die Zelle "G131"

Mit

Range(.Cells(lngZeile, 1), .Cells(lngZeile, 1)).Value = Application.Transpose(wsQuelle.Range("G131").Value)

kopiere ich das Datum in eine andere Mappe,
dort erscheint das Datum dann aber als

04.21.2021.

Warum ist das so und wie änder ich das ab?

Viele Grüße
Andreas
Antworten Top
#22
Range(.Cells(lngZeile, 1), .Cells(lngZeile, 1)).Value = Application.Transpose(wsQuelle.Range("G131").Value)
heisst quasi 
in den Bereich( von Zelle(A1) bis Zelle (A1) ) schreibe aus  der Quellle den Wert aus G131 vertausche die Zahlen.

1. wieso nicht Nur  .Cells(lngZeile, 1).Value = wsQuelle.Range("G131").Value

2. wozu brauchst du transpose? 

3. wenn du dein Formel vba misch masch so beibehalten willst, dann läuft das irgendwann mal richtig vorn Baum. 
Die ganzen Formeln kannst du auch durch vba lösen bzw lösen lassen.
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • ari-2001
Antworten Top
#23
Ja, ok, ich bin halt noch am üben Smile

Trotzdem kopiert er mir das Datum falsch rum, ich habe keine Ahnung, wieso.

Ich muss mal schauen, ob es bei value noch einen weiteren schalter gibt, oder hat jemand spontan eine Eingebung?

Viele Grüße
Andreas
Antworten Top
#24
vielleicht hat die Zielzelle ein benutzerdefiniertes Format.
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • ari-2001
Antworten Top
#25
Hallo Andreas,

probiere es mal mit Value2:
.Cells(lngZeile, 1).Value2 = wsQuelle.Range("G131").Value2
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • ari-2001
Antworten Top
#26

.xlsm   Mappe 2 CEF.xlsm (Größe: 52,69 KB / Downloads: 2) Vielen Dank für die Tipps.

Es muss wohl an der Zieldatei gelegen haben, ich habe einfach eine neue, leere Datei genommen und siehe da, es funktioniert.

Bei der Gelegenheit, ich habe mir ein Makro zusammengebaut, dass mir die gefilterten Werte in eine andere Datei untereinander wegschreibt.
Im Moment läuft es so:

Das Makro filtert den ersten Wert.
Daraus ergibt sich unterhalb der Tabelle mit Hilfe eine Formel.
Dann öffnet das Makro die Zieltabelle, schreibt Werte in die Zieltabelle rein und schließt die Datei wieder.
Das Makro filtert den nächsten Wert.
Öffnet wieder die Zieldatei, schreibt die Werte rein, solange bis der Filter damit durch ist.

Meine Frage, kann man sich das Öffnen und Schließen nicht sparen?
Gibt es die Möglichkeit, dass das Makro die Datei offen lässt und erst dann wieder schliesst, wenn alle Einträge gemacht worden sind?

Tabelle ist beigefügt.

Sub SortierenfürOutlookListe()
    Dim SB
   
    Columns("IV").Clear
    Range(Range("a2"), Range("a2").End(xlDown)).Copy
    Range("IV1").PasteSpecial (xlPasteValuesAndNumberFormats)
 
   
    Range(Range("IV1"), Range("IV1").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo
    Range("R129").Activate
   
  For Each SB In Range(Range("IV1"), Range("IV1").End(xlDown)).Cells
    Range("A1").AutoFilter Field:=1, Criteria1:="=" & SB.Value, Operator:=xlAnd ' wenn es kein Datum ist, Criteria1:= SB.value
   
    'ActiveSheet.PrintOut
    'Call PDF
    ActiveSheet.Calculate
    Application.Wait Now + TimeSerial(0, 0, 1) 'Pause zum anschauen am Bildschirm
    Call übertragen
  Next
 
  Range("A1").AutoFilter Field:=1
  ActiveSheet.Calculate
End Sub


und hier das Kopiermakro:

Sub übertragen()
'Pfad zur Zieldatei festlegen:
 Const MasterDat As String = "C:\Users\andre\Desktop\Übersicht.xlsm" '<= Anpassen!
Dim wsQuelle As Worksheet
Dim wsZielTabelle As Worksheet
Dim lngZeile As Long, rngTmp As Range
'legt fest, dass das aktive Blatt als Quelle dient
Set wsQuelle = ActiveSheet
'Masterdatei öffnen
   Set wsZielTabelle = Workbooks.Open(MasterDat).Worksheets("Übersicht") '<= anpassen!
'Daten übernehmen
   With wsZielTabelle
      'freie Zeile finden
      Set rngTmp = .Cells.Find("*", , , , xlByRows, xlPrevious)
      If Not rngTmp Is Nothing Then
          lngZeile = rngTmp.Row + 1
      Else
         lngZeile = 2
      End If
     
      'Daten aus angegebenen Zellen in Ziel schreiben
        
       .Cells(lngZeile, 1).Value = wsQuelle.Range("G131").Value
       .Cells(lngZeile, 2).Value = wsQuelle.Range("G132").Value
       .Cells(lngZeile, 3).Value = wsQuelle.Range("G135").Value
     
 
      wsZielTabelle.Parent.Close savechanges:=True
End With
End Sub
Antworten Top
#27
Hallo Andreas,
    Application.Wait Now + TimeSerial(0, 0, 1) 'Pause zum anschauen am Bildschirm
    Call Uebertragen
  Next
  Call Uebertragen(True)
  Range("A1").AutoFilter Field:=1
  ActiveSheet.Calculate
End Sub

Sub Uebertragen(Optional Aufraeumen As Boolean)
  'Pfad zur Zieldatei festlegen:
  Const MasterDat As String = "C:\Users\andre\Desktop\Übersicht.xlsm" '<= Anpassen!
  Dim wsQuelle As Worksheet
  Dim lngZeile As Long, rngTmp As Range
  Static wsZielTabelle As Worksheet
  If Aufraeumen Then
    If Not wsZielTabelle Is Nothing Then
      wsZielTabelle.Parent.Close savechanges:=True
      Set wsZielTabelle = Nothing
    End If
  Else
    'legt fest, dass das aktive Blatt als Quelle dient
    Set wsQuelle = ActiveSheet
    If wsZielTabelle Is Nothing Then
      'Masterdatei öffnen
      Set wsZielTabelle = Workbooks.Open(MasterDat).Worksheets("Übersicht") '<= anpassen!
    End If
    'Daten übernehmen
    With wsZielTabelle
      'freie Zeile finden
      Set rngTmp = .Cells.Find("*", , , , xlByRows, xlPrevious)
      If Not rngTmp Is Nothing Then
        lngZeile = rngTmp.Row + 1
      Else
        lngZeile = 2
      End If
      'Daten aus angegebenen Zellen in Ziel schreiben
      .Cells(lngZeile, 1).Value = wsQuelle.Range("G131").Value
      .Cells(lngZeile, 2).Value = wsQuelle.Range("G132").Value
      .Cells(lngZeile, 3).Value = wsQuelle.Range("G135").Value
    End With
  End If
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • ari-2001
Antworten Top
#28
Hallo Uwe,

vielen Dank erst einmal,

ich werde versuchen, das Ganze so umzusetzen.

Mal sehen, ob es mir gelingt, dass das Makro beim filtern auch in einem Blatt namens "Übersicht" in der gleichen (logischerweise geöffneten) Datei
diese Daten transferiert.

Nachdem ich alle Vorarbeiten abgearbeitet habe, soll das Makro zum Abschluss den Filter durchlaufen und mir im Arbeitsblatt "Übersicht" alle von mir benötigten Daten übertragen..

Im Grunde haben wir das ja schon erreicht, allerdings nur mit Hilfe einer externen Datei.

Ist es überhaupt möglich, dass das Makro (in der geöffneten Datei ein Arbeitsblatt mit dem Namen "Übersicht") mit den von mir benötigten Daten
füllt?

Oder muss ich (wie bisher) eine extra Datei dafür befüllen lassen?

Viele Grüße
Andreas



Wenn ich

Gruß
Andreas
Antworten Top
#29
Hallo Andreas,

(04.07.2020, 16:28)ari-2001 schrieb: Oder muss ich (wie bisher) eine extra Datei dafür befüllen lassen?
vermutlich ja.  :17:

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • ari-2001
Antworten Top
#30
Hallo Uwe,

vielen Dank für deine Einschätzung.

Mit der Lösung einer externen Datei konnte ich bisher immer gut leben, also werde ich es auch in Zukunft tun.

Vielen Dank für all die Hilfe!

Lieben Gruß
Andreas
Antworten Top


Gehe zu:


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