Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler im Kopiermakro

Fehler im Kopiermakro
WalterK
Hallo,
mein Kopiermakro bringt den Fehler "400" , für mich ist aber kein Fehler ersichtlich!
Des Fehler wird bei der Kopierzeile "Sheets("Tabelle1").Range..... angezeigt.
Zwei Zusatzfragen hätte ich noch:
1.) Die Bezeichnung "Tabelle1" sollte variabel sein d.h. die Bezeichnung sollte immer so lauten, wie sie im Blatt Auswertung in Zelle H20 angeführt ist.
2.) Kann man bei der Feststellung der letzten benutzten Zeile auch ein Minimum eingeben, z.B. so:
Range(Cells(4, 29), Cells(min(4;LzA30), 40)).Select
Hier noch der Code:
Option Explicit
Sub Auswertung()
Dim LzA2 As Long
Dim LzA30 As Long
Dim Lz As Long
Application.ScreenUpdating = False
LzA2 = Cells(Rows.Count, 2).End(xlUp).Row
LzA30 = Cells(Rows.Count, 30).End(xlUp).Row
Lz = Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
Range(Cells(1, 1), Cells(LzA2, 26)).Select
Selection.ClearContents
Range(Cells(4, 29), Cells(LzA30, 40)).Select
Selection.ClearContents
Sheets("Tabelle1").Range(Cells(1, 1), Cells(Lz, 26)).Copy Sheets("Auswertung"). _
Range(Cells(1, 1), Cells(Lz, 26))
Range("A1").Select
End Sub

Besten Dank für Eure Hilfe
Servus, Walter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Fehler im Kopiermakro
10.04.2011 13:51:28
Josef

Hallo Walter,
ungetestet!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub Auswertung()
  Dim objSh As Worksheet
  Dim LzA2 As Long, LzA30 As Long, Lz As Long
  With Sheets("Auswertung")
    If SheetExist(.Range("H20").Text) Then
      Set objSh = Sheets(.Range("H20").Text)
      LzA2 = .Cells(.Rows.Count, 2).End(xlUp).Row
      LzA30 = Application.Max(4, .Cells(.Rows.Count, 30).End(xlUp).Row)
      Lz = objSh.Cells(Rows.Count, 2).End(xlUp).Row
      
      .Range(.Cells(1, 1), .Cells(LzA2, 26)).ClearContents
      .Range(.Cells(4, 29), Cells(LzA30, 40)).ClearContents
      
      objSh.Range(objSh.Cells(1, 1), objSh.Cells(Lz, 26)).Copy .Cells(1, 1)
      .Range("A1").Select
    Else
      MsgBox "Das Tabellenblatt '" & .Range("H20").Text & "' gibt's nicht!"
    End If
  End With
End Sub

Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
  Dim wks As Worksheet
  On Error GoTo ERRORHANDLER
  If Wb Is Nothing Then Set Wb = ThisWorkbook
  For Each wks In Wb.Worksheets
    If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
  Next
  ERRORHANDLER:
  SheetExist = False
End Function



« Gruß Sepp »

Anzeige
Besten Dank an die Helfer. Habe ...
10.04.2011 15:54:15
WalterK
Hallo,
den Code von Sepp genommen, hat auf Anhieb funktioniert und alles berücksichtigt was ich wollte. Besten Dank Sepp.
Servus, Walter
Noch eine Ergänzungsfrage ..
10.04.2011 19:42:11
WalterK
Hallo,
ich wollte es einrichten, dass der Code auch bei aktivem Blattschutz (ohne Kennwort) funktioniert.
Dafür habe ich die Zeile .Protect UserInterFaceOnly:=True eingefügt.
Dar scheint aber nicht zu funktionieren. Was mache ich falsch?
Besten Dank und Servus, Walter
AW: Noch eine Ergänzungsfrage ..
10.04.2011 20:37:42
Josef

Hallo Walter,
dann so.
Sub Auswertung()
  Dim objSh As Worksheet
  Dim LzA2 As Long, LzA30 As Long, Lz As Long
  With Sheets("Auswertung")
    If SheetExist(.Range("H20").Text) Then
      .Unprotect
      Set objSh = Sheets(.Range("H20").Text)
      LzA2 = .Cells(.Rows.Count, 2).End(xlUp).Row
      LzA30 = Application.Max(4, .Cells(.Rows.Count, 30).End(xlUp).Row)
      Lz = objSh.Cells(Rows.Count, 2).End(xlUp).Row
      
      .Range(.Cells(1, 1), .Cells(LzA2, 26)).ClearContents
      .Range(.Cells(4, 29), Cells(LzA30, 40)).ClearContents
      
      objSh.Range(objSh.Cells(1, 1), objSh.Cells(Lz, 26)).Copy .Cells(1, 1)
      .Range("A1").Select
      .Protect
    Else
      MsgBox "Das Tabellenblatt '" & .Range("H20").Text & "' gibt's nicht!"
    End If
  End With
End Sub



« Gruß Sepp »

Anzeige
Perfekt, besten Dank Sepp! Servus, Walter
10.04.2011 20:42:52
WalterK
.
AW: Fehler im Kopiermakro
10.04.2011 13:53:15
Hajo_Zi
Hallo Walter,
Option Explicit
Sub Auswertung()
Dim LzA2 As Long
Dim LzA30 As Long
Dim Lz As Long
Application.ScreenUpdating = False
LzA2 = Cells(Rows.Count, 2).End(xlUp).Row
LzA30 = Cells(Rows.Count, 30).End(xlUp).Row
Lz = Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
Range(Cells(1, 1), Cells(LzA2, 26)).ClearContents
Range(Cells(4, 29), Cells(LzA30, 40)).ClearContents
With Sheets(Worksheets("Auswertung").Range("H20"))
.Range(.Cells(1, 1), .Cells(Lz, 26)).Copy Sheets("Auswertung"). _
Range(Cells(1, 1), Cells(Lz, 26))
End With
End Sub

Deine Ermittlung der lertzten Zeile liefert ein falsches Ergebnis falls Letzte Zelle in der Spalte belegt ist.
Was Du mit 2 mitteilen willst ist mir nicht klar.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige