Clever-Excel-Forum

Normale Version: Uhrzeit kopieren und einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebes Forum !

Kann mir bitte jemand helfen?
Ist es möglich, dass ein Zellenbereich mit lauter Uhrzeiten (z.B. 8:00 etc.) der per VBA kopiert wird bei diesem Einfüge-Befehl:
Selection.PasteSpecial Paste:=xlPasteValues
die einzufügenden Werte manchmal einfügt und manchmal nicht ?
Ich verwende anstelle dieses Befehls nun den:
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats

Ich kann leider trotz Einzelschritt-Ablauf des Makros nicht sagen, ob es nun passt, da es vorher auch meistens gepasst hat.
Darum meine Frage: Kann es sein, dass das die Ursache des Fehlers ist ?
Ich verwende WINDOWS 7 und EXCEL 2013.
Vielen Dank für Eure Hilfe.

Liebe Grüße aus Innsbruck
Helmut
Hallo Helmut,

aus dieser einen Codezeile kann man nicht herausfinden, warum es manchmal einfügt und manchmal nicht. Was man aber sagen kann, das das Selektieren meistens überflüssig ist. Warum kannst Du im Einzelschrittmodus nicht sagen ob es funktioniert?
Hallo Helmut,

wenn Du nur die Werte einfügst, spielen eventuell vorhandenen Formatierungen der Zelle und Optionen z.B zum Ausblenden von Nullwerten eine Rolle. Ich hab hier mal 8:00 Uhr kopiert und die Werte in unterschiedlich foratierte Zellen eingefügt.

Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
108:000
208:000,333333333
308:0000.01.1900
408:000

ZelleFormatWert
B1#.##00,333333333333333
B2@0,333333333333333
B3TT.MM.JJJJ08:00:00
B400,333333333333333
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg
Hallo Stephan, hallo André !

Vielen Dank für Eure Antwort.
Zur ersten Frage betreffend Einzelschrittmodus: In diesem Modus funktionierte es eigentlich immer.
Aber mit dem dafür vorgesehenen Command Button mal ja, mal nein, macht aber bis auf die Geschwindigkeit keinen Unterschied.

Zu André:
Der Zellenblock sieht z.B. so aus:

MO 8:00 12:00 13:00 17:00
DI 9:30 12:30 13:00 17:00
MI 9:00 13:00 13:30 17:00
DO 8:30 13:00 13:00 17:00
FR 8:30 12:30 13:00 16:00

Das Format ist Uhrzeit 13:30

und dieser Zellenblock wird mittels Selection.Copy kopiert und auf die folgenden Tabellenblätter bis Dezember eingefügt.
Ich hoffe, dass Ihr damit etwas anfangen könnt.

Liebe Grüße
Helmut
Hallo Helmut,

die VBA-ler können dir sicherlich schnell helfen. Du solltest aber dein Makro hier vorstellen. Das wollte dir Stefan mit diesem Satz

Zitat:aus dieser einen Codezeile kann man nicht herausfinden, warum es manchmal einfügt und manchmal nicht.

auch schon sagen.
Hallo liebe Freunde !

Ich bin nicht sicher, ob ich den Code in der gewünschten Form eingegeben habe, aber so sieht er aus.

Liebe Grüße
Helmut


Code:
Sub WoStu_NextMon_Übertr()          

Dim n, tb, loErste, LfdMonat, loLetzte
    
    Application.ScreenUpdating = False
    
    LfdMonat = Month(Date)
    
    ActiveSheet.Select
    loLetzte = Range("A60").End(xlUp).Offset(-2, 0).Row
    loErste = Range("B" & loLetzte).End(xlDown).Offset(0, 0).Row
    
    If ActiveSheet.Cells(loErste + 6, 7).Value = 0 Then
    MsgBox "Noch keine Einträge in 'Wochenstunden-Tabelle ' " & tb & " '" & vbLf & _
    "Bitte jetzt eintragen!", vbExclamation, "Hinweis"
Exit Sub
    End If
    
    
    tb = ActiveSheet.Name
    
    If tb = "Jänner" Then
    n = 0
    ElseIf tb = "Feber" Then
    n = 1
    ElseIf tb = "März" Then
    n = 2
    ElseIf tb = "April" Then
    n = 3
    ElseIf tb = "Mai" Then
    n = 4
    ElseIf tb = "Juni" Then
    n = 5
    ElseIf tb = "Juli" Then
    n = 6
    ElseIf tb = "August" Then
    n = 7
    ElseIf tb = "September" Then
    n = 8
    ElseIf tb = "Oktober" Then
    n = 9
    ElseIf tb = "November" Then
    n = 10
    ElseIf tb = "Dezember" Then
    n = 11
    End If
        
    Dim arrMon, i, Übertrag

    arrMon = Array("Jänner", "Feber", "März", "April", "Mai", "Juni", "Juli", "August", "September", _
    "Oktober", "November", "Dezember")

For i = n To 11

Sheets(arrMon(i)).Activate

    If (i) = n Then GoTo weiter
    
    loLetzte = Range("A60").End(xlUp).Offset(-2, 0).Row
    loErste = Range("B" & loLetzte).End(xlDown).Offset(0, 0).Row
    Cells(loErste, 3).Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats     'Einfügen von Zahlen und Zahlenformat
GoTo nextMon

weiter:
    
    loLetzte = Range("A60").End(xlUp).Offset(-2, 0).Row
    loErste = Range("B" & loLetzte).End(xlDown).Offset(0, 0).Row
    ActiveSheet.Range(Cells(loErste, 3), Cells(loErste + 5, 6)).Select     'WochStu-Tab kopieren
    Selection.Copy

nextMon:
Next i

End Sub
Hallöchen,
Wie ich schon schrieb, das Problem wird mit der Formatierung zu tun haben. (und nicht mit dem VBA-Code). Man kann nach dem Einfügen in die Zelle gehen, wo anscheinend nix steht und in der Eingabezeile nachschauen, ob das wirklich so ist. Oder man ändert nach dem Kopieren mit Formaten die Ausgangsdaten und kopiert noch mal ohne Formate...
Hallo Helmut,

teste mal so:

Code:
Sub WoStu_NextMon_Übertr()
  Dim arrMon As Variant, i As Long
  Dim loErste As Long, loLetzte As Long
  Dim rngQ As Range
  
  arrMon = Array("Jänner", "Feber", "März", "April", "Mai", "Juni", "Juli", _
                 "August", "September", "Oktober", "November", "Dezember")
    
  With Sheets(arrMon(Month(Date) - 1))
    loLetzte = .Range("A60").End(xlUp).Offset(-2, 0).Row
    loErste = .Range("B" & loLetzte).End(xlDown).Offset(0, 0).Row
    
    If .Cells(loErste + 6, 7).Value = 0 Then
      MsgBox "Noch keine Einträge in 'Wochenstunden-Tabelle ' " & .Name & " '" & vbLf & _
              "Bitte jetzt eintragen!", vbExclamation, "Hinweis"
      Exit Sub
    Else
      Set rngQ = .Range(.Cells(loErste, 3), .Cells(loErste + 5, 6))
    End If
  End With
  
  For i = Month(Date) + 1 To 12
    With Sheets(arrMon(i - 1))
      loLetzte = .Range("A60").End(xlUp).Offset(-2, 0).Row
      loErste = .Range("B" & loLetzte).End(xlDown).Offset(0, 0).Row
      rngQ.Copy .Cells(loErste, 3)
    End With
  Next i
End Sub

Gruß Uwe
Vielen Dank für die Hilfe.

Ich werde Uwes Code bei mir testen und darf mich dann wieder melden.

Liebe Grüße
helmut
Hallo Uwe !

Dein Code funktioniert einwandfrei, er hat für meinen Bedarf nur einen kleinen Fehler, er startet immer beim aktuellen Monat des Datums, es könnte aber vorkommen, dass von einem anderen Monatsblatt gestartet werden soll.
Ich habe versucht Deinen Code dahingehend abzuändern, es ist mir aber bis jetzt nicht gelungen.
Wenn es nicht möglich ist, kann ich auch mit dem unveränderten Code leben.
Vielen Dank für Deine Hilfe,.
Liebe Grüße
Helmut
Seiten: 1 2