Announcement

Collapse
No announcement yet.

VBA Excel Marco Typen unverträglichkeit

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VBA Excel Marco Typen unverträglichkeit

    Ich versuche aus einem Excel-Dokument mittels Macro jeweils ein Feld und dann ab Zeile 5 alle Zeilen aus einzelnen Tabellen zusammenzukopieren in EINE Tabelle untereinander.

    Nun gibt mir der Editor beim Ausführen folgende Fehlermeldung aus:
    Laufzeitfehler '13': Typen unverträglich

    Ich weiß aber nicht, wie der darauf kommt und wie man das lösen könnte.

    Bitte daher um Lösungsvorschläge. Laut Debugger ist der Fehler in der Zeile:
    Code:
    Range(Cells("A", 5), Cells("N", k + 4)).Select
    Hier der Quellcode des Macros

    Code:
    Sub Makro5()
        Dim i As Long, j As Long, k As Long, l As Long
        
        j = 1
        
        For i = 2 To Worksheets.Count
        
            Sheets(i).Select
            k = Sheets(i).UsedRange.Rows.Count - 4
            Range("B1").Select
            Selection.Copy
            Sheets("Tabelle1").Select
            
            For l = 0 To k - 1
                Cells("A", j + l).Select
                ActiveSheet.Paste
            Next l
    
            Sheets(i).Select
            Range(Cells("A", 5), Cells("N", k + 4)).Select
            Application.CutCopyMode = False
            Selection.Copy
            Sheets("Tabelle1").Select
            Cells("B", j).Select
            ActiveSheet.Paste
            j = j + k
        Next i
        
    End Sub
    Zuletzt editiert von mez; 24.01.2011, 16:20. Reason: Frage vergessen

  • #2
    Hallo,

    lass Dir mal das zugehörige k jeweils ausgeben.
    Wahrscheinlich ist Sheets(i).UsedRange.Rows.Count an der Stelle nicht größer als 4.

    Gruß

    Comment


    • #3
      Das hängt schon beim ersten Durchlauf der Schleife. k ist 496.
      Hängt allerdings schon be
      i
      Code:
      Range(Cells("A", j + l)).Select
      Aber auch da schon beim ersten Durchlauf.
      Demnach ist j = 1 und l = 0.

      Ich hab das jetzt soweit lokalisiert, dass es an dem Cells() liegt. Und zwar schluckt der das mit den Variablen nicht. Aber ich MUSS da Variablen verwenden. Ist da eventuell was falsch dran?
      Zuletzt editiert von mez; 26.01.2011, 16:46.

      Comment


      • #4
        So, ich hab ne Lösung. Ist sicher nicht die eleganteste, aber sie erfüllt ihren Zweck:

        Code:
        Sub KopiereArbeitszettel()
            Dim SheetNr As Long, AnzEintraege As Long, AnzCopiedEintraege As Long, i As Long, MaxLength As Long
            
            AnzCopiedEintraege = 2
            
            For SheetNr = 4 To Worksheets.Count
                AnzEintraege = 0
                Sheets(SheetNr).Select
                MaxLength = Sheets(SheetNr).UsedRange.Rows.Count
                For i = 5 To MaxLength
                    If Not IsEmpty(Range("A" & i)) Then
                        AnzEintraege = AnzEintraege + 1
                    End If
                Next
                
                If AnzEintraege > 0 Then
                    Range("B1").Select
                    Selection.Copy
                    Sheets("Tabelle1").Select
                    Range("A" & AnzCopiedEintraege & ":A" & AnzCopiedEintraege + AnzEintraege - 1).Select
                    ActiveSheet.Paste
            
                    Sheets(SheetNr).Select
                    Range("A" & 5 & ":N" & AnzEintraege + 4).Select
                    Selection.Copy
                    Sheets(1).Select
                    Range("B" & AnzCopiedEintraege & ":O" & AnzCopiedEintraege + AnzEintraege - 1).Select
                    ActiveSheet.Paste
                    AnzCopiedEintraege = AnzCopiedEintraege + AnzEintraege
                End If
            Next
            
        End Sub

        Comment

        Working...
        X