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
20.02.2015, 00:06
(Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2015, 00: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
|