Anzeige
Archiv - Navigation
1220to1224
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
Inhaltsverzeichnis

Events in Klasse gehen nicht immer

Events in Klasse gehen nicht immer
Martin
Es soll eine graphische Zeitplanung sein. Für jede Resource gibt es eine Userform. Ihre Breite entspricht der Gesamtzeit, wobei ein Pixel pro Minute steht. Es sind aber nur 15er-Einheiten (entsprechend Viertelstunden) zugelassen, so das z.B. eine Userform mit Width=720 12 Stunden abdeckt.
Durch Klicken in die Userform wird eine Textbox erzeugt, die für einen Job steht.
Dafür gibt es eine Klasse, die u. a. der Textbox Routinen zur Verschiebung und zur Größenänderung mit der Maus mitgibt. Eigenschaften der Job werden in einer Tabelle gespeichert, in der jede Zeile für einen Job steht. Dort wird auch für einen neu anzulegenden Job eine freie Zeile gesucht, deren Index auch die Jobnummer bildet.
Um einerseits Kollisionen zu vermeiden und andererseits eine Speicherung zu ermöglichen, gibt es für jede Resource ein Tabellenblatt, in dem die Ziele für einen Tag und die Spalte für eine Position steht. Da die Positionen nur im 15erraster möglich sind, reichen für eine Resource mit 720 Pixeln (entsprechend Minuten) Breite 720/15=48 Zellen um ihre Belegung zu beschreiben. Dabei steht in jeder Zelle einer belegten Position die entsprechende Nummer des Jobs. Über entsprechende Abfragen beim Bewegen/Verändern einer Textbox werden Überlappungen erkannt.
Wird die Userform mit einem bestimmten Datum aufgerufen, so wird die entsprechende Zeile im Resourcenblatt ausgewertet. Sollten dort Zellen mit Jobnummern belegt sein, so werden die entsprechenden Jobs erzeugt. In den nicht belegten Bereichen können durch Mausklick neue Jobs angelegt werden.
Das funktioniert soweit ganz gut. Das Problem ist, das die neu angelegten Jobs (Textboxen) auf die Mouse_Up und _Down-Ereignisse reagieren wie gewünscht, die aus dem Auslesen des Resourcenblattes entstandenen Jobs aber nicht. Die sind unveränderbar.
Neue Jobs werden so erzeugt (in Formulare - Res01):
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim JobPos As Integer
Dim Tmp As String
JobPos = Vielfach(X, 15) / 15 + 1
Jobnummer = freieJobnummer()
Set MeinJob(Jobnummer) = New clsJob
Set Temp = Res01.Controls.Add("Forms.TextBox.1")
Set MeinJob(Jobnummer).Jobs = Temp
With MeinJob(Jobnummer)
.Jobs.SpecialEffect = fmSpecialEffectEtched
...
...
Gespeicherte Jobs werden so erzeugt (in Module - Modul1):
Sub Job2Res(Datum As Long, Jobnummer As Long, Start As Integer, Bereich As Integer)
Dim MeinJob(100) As clsJob
Dim Temp As MSForms.TextBox
Dim Resource As String
Resource = ThisWorkbook.Worksheets("JobData").Cells(Jobnummer, 7)
Set MeinJob(Jobnummer) = New clsJob
Select Case Resource
Case "Res01"
Set Temp = Res01.Controls.Add("Forms.TextBox.1")
Case "Res02"
Set Temp = Res02.Controls.Add("Forms.TextBox.1")
End Select
Set MeinJob(Jobnummer).Jobs = Temp
With MeinJob(Jobnummer)
.Jobs.SpecialEffect = fmSpecialEffectEtched
...
...

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
will nicht unhöflich sein, aber...
16.07.2011 19:13:20
Tino
Hallo,
wer soll dies jetzt nachbauen um Deinen Fehler zu finden oder auch nicht?
Lade ein Bsp. hoch und beschreibe was wie funktionieren soll.
Gruß Tino
AW: will nicht unhöflich sein, aber...
17.07.2011 20:26:25
Martin
Danke Tino,
unter https://www.herber.de/bbs/user/75736.xls ist der Entwurf. Gibt man in Tabelle1!A1 ein Datum (ab dem 1.7.11) ein, so öffnen sich zwei Formulare, in denen man mit Mausklick Textboxen erzeugt, die man mit der linken Maustaste hin- und herschiebt und mit der rechten Taste vergrößern und verkleinern kann. Wechselt man das Datum, so kann man die aus den gespeicherten Werten erstellten Boxen nicht mehr verändern, sehr wohl aber die, die man neu in freien Bereichen erzeugt. (Ich könnte das als Feature verkaufen, es macht die Planung revisionsfest, weil man nichts Vergangenes mehr ändern kann)
Ach ja, ich habe die Größe zwar geändert, aber noch eine Abruchbedingung bei .Left=720, deshalb geht es bei dem Beispiel nur in den ersten zwei Dritteln. Das ganze Drumherum ist noch unschön, ich weiß.
Gruß
Martin
Anzeige
ist ganz einfach ...
17.07.2011 22:39:29
Tino
Hallo,
, Du verwendest mehrmals die Deklarierung Dim MeinJob(65000) As clsJob,
ich würde diese nur einmal in einem Modul als Public deklarieren und beim beenden zurücksetzen.
Gruß Tino
AW: ist ganz einfach ...
18.07.2011 11:51:57
Martin
Hallo Tino,
besten Dank, das war es. Bei einer Public-Deklaration im Modul 1 geht es wie gewünscht.
Gruß
Martin
stellt sich hier die Frage, wer...
17.07.2011 01:05:33
Oberschlumpf
...unhöflich is?
Hallo
Nicht nur, dass da sooo viel Text steht, was (ich habs mir nich durchgelesen) darauf schließen lässt, dass der Fragende eine Komplettlösung sucht.
Gibt es dafür von + für Hans nicht den Link zur Auftragsprogrammierung?
Nein, zusätzlich handelt es sich mal wieder um einen "Experten", der glaubt, dass ein Gruß, eine Anrede überflüssig ist.
Nun ja, ich muss mich ja nicht um eine Problemlösung bemühen.
Will ich auch nich.
Ciao
Thorsten
Anzeige
AW: stellt sich hier die Frage, wer...
17.07.2011 20:46:23
Martin
Guten Tag Thorsten,
leider bekommen wir keine Komplettlösung, bis der Rechtsstreit mit der Firma, die uns eine Komplettlösung verkauft hat, beendet ist, deshalb muß ich ja selber was machen. Und das funktioniert ja auch fast alles, bis auf den einen Punkt (den man auch als Feature ansehen könnte, aber ich möchte es trotzdem verstehen).
Ich habe schon bewußt "VBA-Kenntnisse bescheiden" angegeben.
Aber wenn Dich nicht interessiert, was die Leute mit der Lösung anfangen wollen, dann ist das Deine Sache, mir fehlt das oft, wenn ich mich so durch die Foren lese. Außerdem könnte ja noch was dabei abfallen, wenn einer mich möglicherweise darauf hinweist, das mein Ansatz zu umständlich ist.
Einen schönen Sonntagabend noch und bemühe Dich nicht
Martin
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige