Hallo Bob,
hier einmal Antwortversuche auf die Fragen in deiner PN:
1. zu:
Zitat:Bus 1 fährt drei Umläufe, könnte allerdings noch einen mehr fahren, da Umlauf 91 um um 24:18 startet, also nach dem Ende des Tankvorganges. Kann man das noch irgendwie einfügen?
Das war auch meine erste Lösung. Allerdings endet dann der letzte Umlauf für Bus 1 um 3:39 des Folgetages. Ein täglicher Zyklus der so gefundenen Umläufe ist dann nicht möglich, da der erste Umlauf für Bus 1 um 3:19 beginnt.
Falls du es ändern möchtest kannst du es direkt im Programm anpassen:
a) Mit Alt+F11 wird der VBA-Editor aufgerufen.
b) Mit einem Doppelklick auf "Modul1" unter "VBAProject(Um..">"Module" im linken Projektfenster wird im rechten Editorfenster mein Programm angezeigt.
c) In folgenden zwei Zeilen
Code:
' If dblBusBis(lngAktBus) <= varListe(lngAktUmlauf + 1, 3) Then
If dblBusBis(lngAktBus) <= varListe(lngAktUmlauf + 1, 3) And dblBusVon(lngAktBus) + 1 >= varListe(lngAktUmlauf + 1, 5) Then
must du das ' aus der ersten Zeile entfernen und am Anfang der zweiten Zeile einsetzen. Das ' macht eine Programmzeile zum vom Interpreter nicht auszuwertenden Kommentar. Es wir also der Code der zweiten Zeile durch den Code der ersten Zeile ersetzt.
2. zu
Zitat:Wie genau hast du das programiert?
Das kannst du dir das Programm wie in 1. a) und b) beschrieben anschauen.
3. zu
Zitat:Mit Makros?
Ja, so nennt man die in VBA geschriebenen Programme (Subroutinen und Funktionen) auch.
4. zu
Zitat:Ist das schwer zu lernen?
Das ist für mich, der schon sehr lange dabei ist, auf jeden Fall schwer zu beantworten.
Hier einmal einige Gesichtspunkte:
a) AlgorithmenDie wichtigste Fähigkeit für einen Programmierer ist es für eine Aufgabe Algorithmen zu finden, so dass die Aufgabe mit Hilfe der Elemente der Programmiersprache gelöst werden kann. Mit deiner Frage zu 1. hast du ja gezeigt, dass du meinen Algorithmus zum Lösen deiner Aufgabe verstanden hast.
Wichtig hierfür ist meines Erachtens die Fähigkeit strukturiert zu Denken und hierfür ist wiederum ein Verständnis der Aussagenlogik wichtig.
Hiermit meine ich nicht die mathematisch genau hergeleiteten Regeln der Aussagenlogik, sondern meines Erachten reicht es sich
vorstellen zu können in Zukunft
Spass an einfachen Rechenrätseln zu haben, in denen Ziffern durch Formen ersetzt sind.
b) Programmiersprache (hier VBA)Ich denke das Lernen der eigentlichen Programmiersprache selbst ist relativ einfach, da die Anzahl der Sprachelemente sehr begrenzt ist und man mit wenigen Elementen schon komplexe Programme erzeugen kann.
In dem Programmbeispiel habe ich neben direkten Zuweisungen "... = ..." nur If-Verzweigungen "
If...
Then...
Else ...
End If" und For-Schleifen "
For...
Next"genutzt.
Im Internet gibt es viele Artikel (auch in deutsch) in denen die Sprache umfangreich erklärt wird und für spezielle Fragen gibt es diese Foren.
c) Schnittstellen Programm-ExcelFür die Schnittstellen gilt das gleiche wie für die Elemente der Programmiersprache.
Die Anzahl der unterschiedlichen Schnittstellen ist übersichtlich, man kann mit wenigen Schnittstellen schon komplexe Aufgaben lösen, im Internet findet man viele gute komplette Beschreibungen der Schnittstellen und für spezielle Fragen gibt es diese Foren.
d) Üben und LernenWie für jedes andere Handwerk ist es wichtig die gewonnenen Fähigkeiten regelmässig anzuwenden und auch von den Erfahrungen anderer durch direktes Fragen oder Ansehen von Artikeln zu lernen und die Kenntnisse in den Bereichen a) bis c) zu erweitern.