Registriert seit: 20.06.2014
Version(en): 2013
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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?
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• heli
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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' | | A | B | 1 | 08:00 | 0 | 2 | 08:00 | 0,333333333 | 3 | 08:00 | 00.01.1900 | 4 | 08:00 | 0 |
Zelle | Format | Wert | B1 | #.##0 | 0,333333333333333 | B2 | @ | 0,333333333333333 | B3 | TT.MM.JJJJ | 08:00:00 | B4 | 0 | 0,333333333333333 |
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg |
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• heli
Registriert seit: 20.06.2014
Version(en): 2013
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
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:1 Nutzer sagt Danke an WillWissen für diesen Beitrag 28
• heli
Registriert seit: 20.06.2014
Version(en): 2013
19.02.2015, 23:06
(Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2015, 23:54 von Zwergel.)
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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...
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• heli
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• heli
Registriert seit: 20.06.2014
Version(en): 2013
Vielen Dank für die Hilfe.
Ich werde Uwes Code bei mir testen und darf mich dann wieder melden.
Liebe Grüße
helmut
Registriert seit: 20.06.2014
Version(en): 2013
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
|