Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Werte (Uhrzeiten) kopieren/übertragen

Betrifft: Werte (Uhrzeiten) kopieren/übertragen von: urmila
Geschrieben am: 09.08.2014 19:56:05

Hallo zusammen,

ich brauche wieder Eure Hilfe.

In Tabelle1 aktualisiere ich Daten aus einer anderen Datei.
Diese sind wie folgt aufgebaut: SpalteA=Uhrzeit, SpalteB=Bemerkung
Die Uhrzeiten sind immer stundenweise, also 7:00 - 8:00 - 9:00 - 10:00 etc.

Mit VBA lege ich ein neues Tabellenblatt mit aktuellem Datum und mit vordefinierten Uhreziten von 0:00 bis 23:00 - bis hier ist alles noch in Ordnung.

Nun würde ich gerne mit VBA die Werte in der neu angelegten Tabellenblatt kopieren, zugeordnet zu jeder Uhrzeit.

Ich habe eine Beispieldatei (ohne Makros wie oben beschrieben)

Ich hoffe ihr könnt mir weiterhelfen...

Vielen Dank und LG
Urmila

  

Betrifft: Sorry....die Datei von: urmila
Geschrieben am: 09.08.2014 19:58:10

Sorry habe die Datei vergessen hoch zuladen...

https://www.herber.de/bbs/user/91991.xlsm


LG
Urmila


  

Betrifft: Beispieldatei vergessen hochzuladen OWT von: Spenski
Geschrieben am: 09.08.2014 19:58:49




  

Betrifft: AW: Beispieldatei ist hochgeladen... von: urmila
Geschrieben am: 09.08.2014 20:01:45

LG
Urmila


  

Betrifft: AW: Beispieldatei ist hochgeladen... von: urmila
Geschrieben am: 09.08.2014 20:45:13

LG
Urmila


  

Betrifft: AW: Werte (Uhrzeiten) kopieren/übertragen von: Dieter Klemke
Geschrieben am: 09.08.2014 21:41:20

Hallo Urmila,

du kannst das mit dem folgenden Programm machen:

Sub Übertragen()
  Dim letzteZeileQ As Long
  Dim wsQ As Worksheet ' Quelle
  Dim wsZ As Worksheet ' Ziel
  Dim zeileQ As Long
  Dim zeileZ As Long
  
  Set wsQ = ThisWorkbook.Worksheets("Tabelle1")
  Set wsZ = ThisWorkbook.Worksheets("09.08.2014")
  letzteZeileQ = wsQ.Cells(wsQ.Rows.Count, "A").End(xlUp).Row
  For zeileQ = 2 To letzteZeileQ
    zeileZ = 2 + wsQ.Cells(zeileQ, "A") * 24
    wsZ.Cells(zeileZ, "B") = wsQ.Cells(zeileQ, "B")
  Next zeileQ
End Sub
Viele Grüße
Dieter


  

Betrifft: AW: Werte (Uhrzeiten) kopieren/übertragen von: urmila
Geschrieben am: 09.08.2014 23:04:37

Hallo Dieter,

vielen Dank für den Code, funktioniert einwandfrei.

Doch eine Frage (bevor ich diese irgendwann stellen sollte): Was wenn sich die Uhrzeiten sich ändern,
also halbstündlich oder andere Routine, statt volle Stunden immer z.B. 12:15 - 13:25 - 14:35?

Da verschieben sich die Zellen. WIe kann ich das verallgemeinern oder was muss ich dann einstellen?

Gute Nacht und LG
Urmila


  

Betrifft: Rückfragen von: cross
Geschrieben am: 10.08.2014 00:53:30

Hi,
vor einer Antwort stellen sich erst mal weitere Fragen.

a) Können die Stundenfolgen von (Tages-)Blatt zu (Tages-)Blatt variieren?
(Dann müsste VBA bei jedem Tag erst mal feststellen, wie der Tag in Zeiten aufgeteilt ist.)

b) Im ersten Beispiel ging es um vollen Stunde, in deinem neuen Beispiel (12:15 - 13:25 - 14:35) beträgt der Abstand
jeweils 70 Minuten. Ist dann das Intervall an diesem Tag immer 70 Minuten oder kann auch das sich ändern?
Was stünde übrigens beim Beispiel (12:15 - 13:25 - 14:35) in A2:A3, was in A24?

c) Oder ist fast gar nichts mehr gleichmäßig? In jedem (Tages-)Blatt könnten auch beliebige Zeiten stehen,
nur nach Größe sortiert sollten sie schon sein.

d) Wie auch immer: Wäre zu prüfen, ob jede der Zeiten in Tabelle1 im (Tages-)Blatt gefunden wird?
Was, wenn sie nicht gefunden wird?

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Rückfragen von: urmila
Geschrieben am: 10.08.2014 13:12:22

HAllo cross,

also Tabellenblatt ist immer das selbe (Datum) und die Uhrzeiten sind auch immer die selben. Nur war die Frage was wenn sich die Uhrzeiten ändern sollten, also statt volle Stunden unterschiedliche Abstände.

Der zweite Code vomn Dieter ist genau das richtige.

Dir aber auch lieben Dank für Deine Hilfe und schönen Sonntag.

LG
Urmila


  

Betrifft: AW: Werte (Uhrzeiten) kopieren/übertragen von: Dieter Klemke
Geschrieben am: 10.08.2014 10:54:46

Hallo Urmila,

wenn sich die Zeilennummer nicht mehr aus der Uhrzeit direkt berechnen lässt, dann muss nach ihr gesucht werden. Das könnte z.B. so aussehen:

Sub Übertragen_2()
  Dim letzteZeileQ As Long
  Dim nichtVorhanden As Boolean
  Dim wsQ As Worksheet ' Quelle
  Dim wsZ As Worksheet ' Ziel
  Dim zeileQ As Long
  Dim zeileZ As Long
  
  Set wsQ = ThisWorkbook.Worksheets("Tabelle1")
  Set wsZ = ThisWorkbook.Worksheets("09.08.2014")
  letzteZeileQ = wsQ.Cells(wsQ.Rows.Count, "A").End(xlUp).Row
  For zeileQ = 2 To letzteZeileQ
    zeileZ = ZielZeile(wsQ.Cells(zeileQ, "A"), wsZ.Columns("A"), nichtVorhanden)
    If nichtVorhanden Then
      MsgBox Format$(wsQ.Cells(zeileQ, "A"), "hh:mm") & _
             " in Blatt " & wsZ.Name & " nicht vorhanden"
    Else
      wsZ.Cells(zeileZ, "B") = wsQ.Cells(zeileQ, "B")
    End If
  Next zeileQ
End Sub

Function ZielZeile(Gesucht As Double, _
                   Suchbereich As Range, _
                   NichtGefunden As Boolean) As Long
  On Error GoTo Fehler
  ZielZeile = Application.WorksheetFunction.Match(Gesucht, Suchbereich, False)
  Exit Function
Fehler:
  NichtGefunden = True
End Function
Viele Grüße
Dieter


  

Betrifft: AW: Werte (Uhrzeiten) kopieren/übertragen von: urmila
Geschrieben am: 10.08.2014 13:14:41

Hallo Dieter,

ich habe den Code kurz getest und es scheint genau das zu sein wonach ich im Anschluss gefragt hatte.

Vielen Dank für deine Hilfe und vorallem für die Fehlermeldung, falls Uhrzeit nicht gefunden.

LG
Urmila