Microsoft Excel

Herbers Excel/VBA-Archiv

Range mit dynamischer Spalte

Betrifft: Range mit dynamischer Spalte von: x.x
Geschrieben am: 08.04.2021 17:38:23

Hallo

ich möchte

Range("$BD$3:$BG$3")
ersetzen durch einen dynmaischen Wert. Dafür suche ich zunächst die Spalte mit dem Wert "Datum" und möchte dann die nächste, rechts davon nehmen, d.h. irgendwie in dem Format Cells(3, Such.Column +1)

Code:

'Datum transponieren
 Dim Such As Range
 Such = Sheets("A.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:=xlWhole)

 Sheets("N.").Range("$BD$3:$BG$3").Copy 
 Sheets("Imp").Range("$F$2:F" & Cells(Rows.Count, 1).End(xlUp).Row).PasteSpecial Paste:= _
xlPasteValues, Transpose:=True
 Columns("F:F").NumberFormat = "m/d/yyyy"


Wäre dankbar für Tipps!

LG


Betrifft: AW: Range mit dynamischer Spalte
von: Daniel
Geschrieben am: 08.04.2021 18:31:05

Hi
wenn du die Spaltennummer brauchst:
Dim Such as Long
 Such = Sheets("A.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:=xlWhole).Column + 1
als Zelle
 Dim Such as Range
Set Such = Sheets("A.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1)
Gruß Daniel

Betrifft: AW: Range mit dynamischer Spalte
von: x.x
Geschrieben am: 08.04.2021 18:34:24

Danke Daniel!

Mein Problem ist eher, dass ich nicht weiß, wie ich die Spaltenbuchstaben BD/BG durch die dynamische Spalte ersetzen soll, damit der Code noch funktioniert.



Hast du einen Tipp

Betrifft: AW: Range mit dynamischer Spalte
von: Werner
Geschrieben am: 08.04.2021 18:40:57

Hallo,

meinst du so:
  • Sub Schaltfläche1_Klicken()
    Dim Such As Range
     
    Set Such = Sheets("A.").Rows(3).Find(what:="Datum", _
    LookIn:=xlValues, lookat:=xlWhole)
    
    If Not Such Is Nothing Then
        Sheets("N.").Cells(3, Such.Column).Offset(, 1).Resize(, 4).Copy
        With Sheets("Imp")
            .Cells(.Cells(.Rows.Count, "F").End(xlUp).Offset(1).Row, "F") _
            .PasteSpecial Paste:=xlPasteValues, Transpose:=True
            .Columns("F").NumberFormat = "m/d/yyyy"
        End With
    Else
        MsgBox "Es gibt keine Spalte Datum."
    End If
    
    Set Such = Nothing
    Application.CutCopyMode = False
    End Sub


  • Wobei mir das seltsam vorkommt. Du suchst "Datum" im Blatt "A." kopierst dann aber aus dem Blatt "N.".

    Gruß Werner

    Betrifft: AW: Range mit dynamischer Spalte
    von: Guest
    Geschrieben am: 09.04.2021 11:09:09

    Hallo Werner,

    tut mir sehr leid - ich habe den Code komplett übersehen. Das werde ich gleich mal ausprobieren - danke!

    Betrifft: AW: Range mit dynamischer Spalte
    von: Guest
    Geschrieben am: 09.04.2021 11:12:38

    Hallo Werner,

    tut mir sehr leid - ich habe den Code komplett übersehen. Das werde ich gleich mal ausprobieren - danke!

    Betrifft: AW: Range mit dynamischer Spalte
    von: Guest
    Geschrieben am: 09.04.2021 11:30:25

    Das funktioniert super, allerdins werden die vier Zellen nur einmal reinkopiert.
    Es soll aber mehrfach bis zur letzten gefüllten Zelle in Spalte A in Spalte F eingefügt werden
    D.h.
    Termin 1
    Termin 2
    Termin 3
    Termin 4
    Termin 1
    Termin 2
    ....


    Betrifft: AW: Range mit dynamischer Spalte
    von: Werner
    Geschrieben am: 09.04.2021 11:53:12

    Hallo,

    dann z.B. so:
  • Sub Schaltfläche1_Klicken()
    Dim Such As Range, loAnfang As Long, loEnde As Long
     
    Application.ScreenUpdating = False
    
    Set Such = Sheets("A.").Rows(3).Find(what:="Datum", _
    LookIn:=xlValues, lookat:=xlWhole)
    
    If Not Such Is Nothing Then
        Sheets("N.").Cells(3, Such.Column).Offset(, 1).Resize(, 4).Copy
        With Sheets("Imp")
            loAnfang = .Cells(.Rows.Count, "F").End(xlUp).Offset(1).Row
            loEnde = .Cells(.Rows.Count, "A").End(xlUp).Row
            .Cells(loAnfang, "F").PasteSpecial Paste:=xlPasteValues, Transpose:=True
            .Cells(loAnfang, "F").Resize(4).AutoFill _
            Destination:=.Range(.Cells(loAnfang, "F"), .Cells(loEnde, "F")), Type:=xlFillCopy
            .Columns("F").NumberFormat = "m/d/yyyy"
        End With
    Else
        MsgBox "Es gibt keine Spalte Datum."
    End If
    
    Set Such = Nothing
    Application.CutCopyMode = False
    End Sub


  • Gruß Werner

    Betrifft: AW: Range mit dynamischer Spalte
    von: Guest
    Geschrieben am: 09.04.2021 13:29:01

    Danke, das läuft einwandfrei! Vielen vielen Dank!

    Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
    von: Werner
    Geschrieben am: 09.04.2021 15:05:17



    Betrifft: AW: Range mit dynamischer Spalte
    von: x.x
    Geschrieben am: 08.04.2021 18:38:43

    Danke Daniel!

    Mein Problem ist eher, dass ich nicht weiß, wie ich die Spaltenbuchstaben BD/BG durch die dynamische Spalte ersetzen soll, damit der Code noch funktioniert.



    Hast du einen Tipp

    Betrifft: AW: Range mit dynamischer Spalte
    von: Guest
    Geschrieben am: 09.04.2021 10:51:04

    Danke.

    Ich hab es nun so gemacht
        Dim Liefertermin1 As Long, Liefertermin2 As Long, Liefertermin3 As Long, Liefertermin4 As  _
    Long
        
         Liefertermin1 = Sheets("Nfr.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:= _
    xlWhole).Column + 1
         Liefertermin2 = Sheets("Nfr.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:= _
    xlWhole).Column + 2
         Liefertermin3 = Sheets("Nfr.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:= _
    xlWhole).Column + 3
         Liefertermin4 = Sheets("Nfr.").Rows(3).Find(what:="Datum", LookIn:=xlValues, lookat:=xlWhole).Column + 4
    Nun möchte ich diese Spalten von Termin 1 bis 4 in Zeile 3 kopieren und (mehrfach) einfügen:
    Sheets("N.").Range(Cells(3, Liefertermin1), Cells(3, Liefertermin4)).Copy
    Sheets("A.").Range("$F$2:F" & Cells(Rows.Count, 1).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues, Transpose:=True

    Leider erhalte ich hier einen Fehler: Anwendungs- oder objektorientierter Fehler (1004)

    Hat jemand eine Lösung? LG

    Betrifft: AW: Range mit dynamischer Spalte
    von: Werner
    Geschrieben am: 09.04.2021 10:58:35

    Hallo,

    und eine Reaktion für meinen Vorschlag hälst du nicht für nötig?

    Gruß Werner