Makro kann kopiert Wertebereich nicht wenn Tabelle ausgeblendet ist
#1
Hallo zusammen,

ich habe ein Problem mit der untenstehenden Makro.
Beim öffnen der Arbeitsmappe wird die Makro ausgeführt, sofern sie an dem jeweiligen Tag noch nicht ausgeführt wurde.
Wenn die Tabelle6 eingeblendet ist, klappt dies wunderbar. Sobald ich sie ausblende funktioniert das kopieren der Zeilen nicht mehr, die Makro läuft dennoch durch und erstellt den Timestamp.
Ich bin kein Experte und habe gelesen man kann bei ausgeblendeten Tabellen kein .select verwenden, deswegen habe ich es auf diese Weise probiert.
Weiß jemand wie ich die Makro umschreiben kann, so dass trotz Ausblenden der Tabelle6 die Werte kopiert werden?



Private Sub Auto_Open()
 Dim i As Integer
 Dim cell As Range
 i = 1
 For Each cell In Tabelle6.Range("A1:A1000")
     
If Tabelle6.Range("S3") > Tabelle6.Range("D2") Then End

     If cell.Value = Range("D2") Then
         
         cell.EntireRow.Copy
         Tabelle7.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
         i = i + 1
     
     End If
     
 Next cell
 Application.CutCopyMode = False
 Tabelle6.Range("S3") = Now
End Sub
Top
#2
Hallo,

teste mal so:

Code:
Private Sub Auto_Open()
Dim i As Long, j As Long
j = Tabelle7.Cells(Rows.Count, 1).End(xlUp).Row + 1

With Tabelle6
 If .Range("S3") <= .Range("D2") Then
   For i = 1 To 1000
     If .Cells(i, 1) = .Range("D2") Then
       Tabelle7.Rows(j).Value = .Rows(i).Value
       j = j + 1
     End If
   Next i
  .Range("S3") = Now
 End If
End With
End Sub


Es wird nichts kopiert, sondern die Werte der Zeilen werden übertragen.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Eistee
Top
#3
Hi,

vielen Dank für die schnelle Antwort.
Wenn ich das wie folgt schreibe, bekomme ich die Meldung "If-Block ohne End If"
Wenn ich ein "End If" hinzufüge bekomme ich die Meldung "End If ohne If"

Private Sub Auto_Open()
Dim i As Long, j As Long
j = Tabelle7.Cells(Rows.Count, 1).End(xlUp).Row + 1

With Tabelle6
 If .Range("S3") <= .Range("D2") Then
   For i = 1 To 1000
     If .Cells(i, 1) = .Range("D2") Then
       Tabelle7.Rows(j).Value = .Rows(i).Value
       j = j + 1
     End If
     

 Next i
 Application.CutCopyMode = False
 Tabelle6.Range("S3") = Now
End Sub
Top
#4
Hallo,

und warum schreibst Du es nicht so wie ich?

Auf den ersten Blick fehlt bei Dir nach dieser Zeile

Next i

ein

End With
Gruß Atilla
Top
#5
Hallo,

ich bekomme es einfach nicht hin auf diese Weise überhaupt eine Makro laufen zu lassen.
Habe mal eine Beispieltabelle angehangen. "abc" ist die Makro so wie du sie meinst. "def" ist die Makro die genau tut was sie soll, nur nicht bei ausgeblendetem Tabellenblatt.


.xlsm   abc.xlsm (Größe: 23,83 KB / Downloads: 2)

Gruß
Eistee
Top
#6
Hallo,

Code:
Public Sub abc()
Dim i As Long, j As Long
j = Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row + 1

With Tabelle1
If .Range("S3") <= .Range("D2") Then
  For i = 1 To 1000
    If .Cells(i, 1) = .Range("D2") Then
      Tabelle2.Rows(j).Value = .Rows(i).Value
      j = j + 1
    End If
   Next i
 End If
 .Range("S3") = Now
End With

End Sub

Damit Du was erkennst, muss der Wert in S3 < als der in D2 sein. Also zum Testen einfach ein kleineres Datum in S3 schreiben (in Tabelle1)
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Eistee
Top
#7
Danke dir, klappt jetzt einwandfrei.
Top


Gehe zu:


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