Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

xls macro automatisierungsproblem

xls macro automatisierungsproblem
18.06.2008 23:10:14
Michael
Hallo,
ich habe folgendes Problem, ich möchte aus einen Fahrplan, den ich in 2 Tabellen gegliedert habe (Nord)- , und (Süd)-Richtung einen "Umlaufplan" automatisch erstellen.
Wenn die 1.Tram um 6:00 Adorf (A2) abfährt und um in Dheim um 6:13 (D2) ankommt,
soll mit Hilfe Feld (E2) die Abfahrtzeit für die Rückfahrt in der (Süd)-Tabelle in Spalte A gesucht werden.
hier (6:18).
Ich habe bereits versucht, mit dem Marcro-Recorder, die Kopiervorgänge nach Tabelle3 zu automatisieren.
Leider funktioniert das gegenwärtig nur "Halb-Automatisch"
Zum einen gelingte es mir nicht den Zeit-Wert aus irgendein Feld als String zu nehmen, den ich für die
Suchfunktion "t" dringend brauche und zum anderen habe
ich keine Ahnung, wie man automatisch die Felder vor dem Einfügen um "+1 hochsetzt" um die bereits eingefügten Werte nicht wieder neu zu überschreiben (löschen).
Vielleicht kann mir der eine oder andere einen Tip geben, wie man das Problem lösen kann.
Die xls-Datei ist unter https://www.herber.de/bbs/user/53190.xls abgelegt.

Sub Makro1()
' Makro1 Makro
' Makro am 17.06.2008 von BB aufgezeichnet
Sheets("Nord").Select
Range("A2").Select
Selection.Copy
Sheets("Tabelle3").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("Nord").Select
Range("D2").Select
Selection.Copy
Sheets("Tabelle3").Select
Range("D2").Select
ActiveSheet.Paste
Sheets("Nord").Select
Range("E2").Select
Selection.Copy
t = "6:18"                     '..................hier habe ich für "t" 6:18 erzwungen;
'eigentlich sollte hier aus der Nord-Tabelle Feld (E2)
'den Wert schnappen und für "t" eingesetzt werden.
'Dim l As Integer     ..hier habe ich versucht den Wert in Feld (E2) als "t" zu nehmen.
'For t = 1 To 2            Funktionierte nicht.
'ttm = Cells(t, 8)
'Next t
'Dim l As Double    ...hier habe ich versucht den Wert in Feld (E2) als "t" zu nehmen.
'For t = 1 To 2
'ttm = ActiveSheet.Cells(t, 8).Value
'Next t
Sheets("Süd").Select
Columns("A:A").Select
Selection.Find(What:=t, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Select
Selection.Copy
Sheets("Tabelle3").Select
Range("B3").Select
ActiveSheet.Paste
Sheets("Süd").Select
Range("D2").Select
Selection.Copy
Sheets("Tabelle3").Select
Range("D3").Select
ActiveSheet.Paste
Sheets("Süd").Select
Range("E2").Select
Selection.Copy
t = "6:40"
Sheets("Nord").Select
Columns("A:A").Select
Selection.Find(What:=t, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Select
Selection.Copy
Sheets("Tabelle3").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Nord").Select
Range("D4").Select
Selection.Copy
Sheets("Tabelle3").Select
Range("D4").Select
ActiveSheet.Paste
End Sub


Vielen Dank im Vorraus
Michael

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xls macro automatisierungsproblem
19.06.2008 02:21:32
fcs
Hallo Michael,
ich hab dir mal Schleifen so aufgebaut, das der Nord-Süd Fahrplan im Wechsel abgearbeitet wird.
Beginnend mit dem 1. Zug/Bus in Nordrichttung wird immer der nächste Anschluß in die andere Richtung gesucht. Jede Verbindung wird in das Blatt 3 eingetragen. Dabei wird komplett auf die Select-Anweisungen verzichtet und die Werte immer direkt in die Tabellen geschrieben bzw. ausgelesen.
Durch Verwendung von Zeilenzählern wird die Ausgabe der Werte in die jeweils nächste Zeile kontrolliert.
Die Hilfspalten E in den Tabellen Nord und Süd sind nicht erforderlich. Das Makro sucht automatisch für die Gegenstrecke die nächste Abfahrzeit.
Gruß
Franz

Sub Makro1()
' Makro1 Makro
' Makro am 17.06.2008 von BB aufgezeichnet, modifiziert von fcs
Dim wksNord As Worksheet, wksSued As Worksheet, wks3 As Worksheet
Dim ZeileN As Long, ZeileS As Long, Zeile3 As Long
Const SpalteEndstation As Long = 4
Set wks3 = Worksheets("Tabelle3")
Set wksNord = Worksheets("Nord")
Set wksSued = Worksheets("Süd")
ZeileN = 2
ZeileS = 2
Zeile3 = 1
t = wksNord.Cells(ZeileN, 1) 'startzeit
Do Until IsEmpty(wksNord.Cells(ZeileN, 1))
'nächste Zeile mit nächster Abfahrtzeit Nord suchen
With wksNord
'prüfen, ob Ankunftszeit Süd > letzte Abfahrt Nord
If t > Application.WorksheetFunction.Max(.Range("A:A")) Then Exit Do
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1).Value >= t Then
ZeileN = Zeile
Exit For
End If
Next
End With
Zeile3 = Zeile3 + 1
wks3.Cells(Zeile3, 1) = wksNord.Cells(1, 1)      'Abfahrtstation Nord
wks3.Cells(Zeile3, 2) = wksNord.Cells(ZeileN, 1) 'Abfahtzeit Nord
wks3.Cells(Zeile3, 3) = wksNord.Cells(1, SpalteEndstation)      'Endstation Nord
wks3.Cells(Zeile3, 4) = wksNord.Cells(ZeileN, SpalteEndstation) 'Ankunftzeit Nord
t = wksNord.Cells(ZeileN, SpalteEndstation) 'Ankunftszeit merken
'nächste Zeile mit nächster Abfahrtzeit Sued suchen
With wksSued
'prüfen, ob Ankunftszeit Nord > letzte Abfahrt Süd
If t > Application.WorksheetFunction.Max(.Range("A:A")) Then Exit Do
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1).Value >= t Then
ZeileS = Zeile
Exit For
End If
Next
End With
Zeile3 = Zeile3 + 1
wks3.Cells(Zeile3, 1) = wksSued.Cells(1, 1)      'Abfahrtstation Süd
wks3.Cells(Zeile3, 2) = wksSued.Cells(ZeileS, 1) 'Abfahtzeit Süd
wks3.Cells(Zeile3, 3) = wksSued.Cells(1, SpalteEndstation)      'Endstation Süd
wks3.Cells(Zeile3, 4) = wksSued.Cells(ZeileS, SpalteEndstation) 'Ankunftzeit Süd
t = wksSued.Cells(ZeileS, SpalteEndstation) 'Ankunftszeit merken
Loop
End Sub


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige