Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Grafik an Zelle in Datumspalte anfügen

Grafik an Zelle in Datumspalte anfügen
Beffen
Mahlzeit liebe Gemeinde.
Ich habe eine Aufgabe bekommen über die ich jetzt schon ne weile grüble.
Angehangen hab ich eine Beispielmappe, wie es zum Schluss aussehen soll:
https://www.herber.de/bbs/user/73047.xlsx
Hierbei soll das TB "Zeitstrahl" per VBA generiert werden.
1. Im "Zeitplan" trägt der Benutzer bei entsprechendem Datum ein, welches Event (Abgleich, Finaltest, ...) stattfindet. Entsprechend wird das Symbol ausgewählt und an die Stelle mit dem Datum gesetzt.
2. die Spalte Zugang muss dann dementsprechend unter das Symbol gesetzt werden. ebenfalls zum passendem Datum.
Habs bereits mit Addpicture probiert, aber die Symbole sind ja scheinbar Excelsymbole und werden wahrscheinlich anders angesprochen als externe Bilder.
Ausserdem grauts mir vor dem Positionieren von Grafiken an eine bestimmte Stelle... Kann man hierbei trotzdem mit Zellendeklarationen arbeiten?
Was ausserdem noch zu realisieren wäre: an manchen Tagen treten mehrere Dinge ein. Der User dupliziert hierzu einfach im Tabellenblatt "Zeitplan" die jeweilige Zeile und trägt das neue Event und den neuen Zugang ein. Diese Änderung müsste im Zeitstrahl dann ebenfalls sichtbar werden und ergänzt werden....
Ich steh momentan bisschen aufm Schlauch? Hat jemand einen Ansatz?
Gruß Beffen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Grafik an Zelle in Datumspalte anfügen
12.01.2011 17:05:32
Beffen
Genial. Danke Dir. Ich schau mirs nochmal gründlich an und versuche draus zu lernen! ^^
Kannst du die Grafiken, wenn du sie in die Zeile eingefügt hast noch formatieren? Also Vertikale und horizontale Ausrichtung xlcenter?
Gruß Beffen
tausend dank schonmal im Vorraus!
AW: Grafik an Zelle in Datumspalte anfügen
13.01.2011 07:13:30
Eugen
hi und moin
Set sh = Sheets(2).Shapes.AddShape(IIf(szEvent = "Sammeln", msoShapeDiamond, msoShapeFlowchartOffpageConnector), _
Int(Sheets(2).Cells(xx, x).Left + Sheets(2).Cells(xx, x).Width / 2), _
Int(Sheets(2).Cells(xx, x).Top + Sheets(2).Cells(xx, x).Height / 2), _
IIf(szEvent = "Sammeln", Int(5# / 0.35), Int(5.8 / 0.35)), _
IIf(szEvent = "Sammeln", Int(3.5 / 0.35), Int(5.2 / 0.35)))
Die sind doch schon zentriert !!!!
Anzeige
Manno mann
13.01.2011 09:21:05
Beffen
Moin Moin.
So schon mal ganz geil. Wenn ich die Eintragungen aber nun bis zu einem unbestimmten Datum verlängern möchte. also beispielsweise für den 28.04.2012 einen EIntrag machen möchte geht dass ja schon, wenn ich die Zeile
For x = 2 To 366
in
For x = 2 To 1500
ändere. Allerdings Platziert VBA die Marke anstatt am 28.04.2012, am 30.04.2012. Hat das etwas mit der 366 zu tun? Jeweils ein Tag mehr pro Jahr über zwei Jahre?
Ausserdem müsst das Datum mit in der Zelle stehen. Mit ner Formel bekommt mans ja hin, aber nicht, wenn der "Zugang" noch mit in der Zelle staht. da würde die Formel überschrieben werden. Könnte man sicherlich mit ner Befehlszeile ersetzen. Ich weiss aber nicht wo. Genau genommen, da ich mit Excelshapes noch nicht gearbeitet habe, übersteigt der Code leicht meinen Horizont. :-(
was zum Beispiel hat die folgende Zelle für eine Aufgabe:
IIf(szEvent = "Sammeln", Int(5# / 0.35), Int(5.8 / 0.35)), _
IIf(szEvent = "Sammeln", Int(3.5 / 0.35), Int(5.2 / 0.35)))
und wie müsste der Code geändert werden um die in Tabelle3 hinterlegten Symbole zu verwenden?
Gruß und danke für die Lehrstunde Uwe
Anzeige
AW: Manno mann
13.01.2011 10:27:08
Eugen
auch moin moin
For x = 2 To 1500
es sucht in den spalten 2 bis 1500 - da muss dann in der zweiten Zeile das jeweilige Datum stehen.
dann sollte es eigentlich auch passen.
zum Problem datum
ändere die Zeile Sheets(2).Cells(xx, x).Value = szZugang
ab in
sheets(2).cells/xx,x).Value = szZugang + chr(10) + str(szDate)
dann steht das Datum auch mit drin.
IIf(szEvent = "Sammeln", Int(5# / 0.35), Int(5.8 / 0.35)), _
IIf(szEvent = "Sammeln", Int(3.5 / 0.35), Int(5.2 / 0.35)))
also die addshape Methode verlangt 5 Parameter
als erstes die Art des einzufügenden shapes msoDiamond zum Beispiel
die anderen Parameter sind Left und Top und width und Height des shapes, also die beschreibung, wo
das shape auf dem Bildschirm gezeichnet wird
die beiden iif da oben sagen aus, wenn du ein Sammeln bist, dann ist die width(Breite) 0,5cm / 0.35
wenn nicht dann 0,58 cm / 0.35
das sind die Breitenwerte deiner Shapes - die müssen durch 0.35 geteilt werden, da diese Methode alle Bildschirmangaben in Punkt verlangt.
und wie müsste der Code geändert werden um die in Tabelle3 hinterlegten Symbole zu verwenden
da musst du eigentlich nur die bereits bestehenden shapes entsprechend umformatieren !!!
mfg
eugen
Anzeige
AW: Manno mann
13.01.2011 11:00:05
Beffen
ah, okay. D
ann hab ich sozusagen die GLEICHEN Shapes verwendet, wie in Tabelle3. aber nicht die SELBEN.
Wenn ich nun kurzerhand die Grafiken im Tabelle3 ändere, dann wird die Änderung ja nicht übernommen und wenn Ich mir beispielsweise ein Flugzeug reinlade um eine Dienstreise zu verdeutlichen, dann müsste das umfangreich in dem Code hinzugefügt werden.
Das Ziel wäre nun in Tabelle3 in Spalte A "Flug" zu ergänzen und in Spalte "B" (direkt neben "Flug") ein kleines Flugzeug zu platzieren und wenn ich im "Zeitplan" bei einem Datum unter "Event" "Flug" ergänze und nach ausführen des Makros das kleine Flugzeug im Zeitstrahl auftaucht.
Weisst Du wie ich das meine?!
Gruß
Gruß und danke
Anzeige
AW: Grafik an Zelle in Datumspalte anfügen
13.01.2011 09:33:13
Eugen
hi und moin
jettt hab ich des erst verstanden !
und hier die exakte Zentrierung der shapes
geänderte Stellen sind fett/Kursiv markiert.
Public Sub generate_zs()
Dim i As Long, x As Long, xx As Long
Dim szDate As Date, sh As Shape
Dim szArch As String, szZugang As String, szEvent As String
Dim x_off As Double
Dim y_off As Double
For i = Sheets(2).Shapes.Count To 1 Step -1
x = Sheets(2).Shapes(i).TopLeftCell.Row
xx = Sheets(2).Shapes(i).TopLeftCell.Column
Sheets(2).Shapes(i).Delete
Sheets(2).Cells(x, xx).Value = ""
Next i
For i = 2 To 10000
If Sheets(1).Cells(i, 2).Value = "" Then Exit For
If Sheets(1).Cells(i, 3).Value  "" Then
szDate = Sheets(1).Cells(i, 2).Value
szArch = Sheets(1).Cells(i, 3).Value
szZugang = Sheets(1).Cells(i, 5).Value
szEvent = Sheets(1).Cells(i, 6).Value
' searching for correct date
For x = 2 To 366
If Sheets(2).Cells(2, x).Value = szDate Then
' searching appropriate row
For xx = 3 To 6
If Sheets(2).Cells(xx, 1).Value = szArch Then
                                  x_off = IIf(szEvent = "Sammeln", Int(2.5 / 0.35), Int( _
2.9 / 0.35))
y_off = IIf(szEvent = "Sammeln", Int(1.75 / 0.35), Int(2.6 /  _
0.35))                                   Set sh = Sheets(2).Shapes.AddShape(IIf(szEvent = "Sammeln", msoShapeDiamond, msoShapeFlowchartOffpageConnector), _
Int(Sheets(2).Cells(xx, x).Left + Sheets(2).Cells(xx, x) _
.Width / 2 - x_off), _
Int(Sheets(2).Cells(xx, x).Top + Sheets(2).Cells(xx, x). _
Height / 2 - y_off), _
IIf(szEvent = "Sammeln", Int(5# / 0.35), Int(5.8 / 0.35) _
), _
IIf(szEvent = "Sammeln", Int(3.5 / 0.35), Int(5.2 / 0. _
35)))
Select Case szEvent
Case "Abgleich"
sh.Fill.ForeColor.RGB = RGB(0, 0, 255)
Case "Sammeln"
sh.Fill.ForeColor.RGB = RGB(255, 255, 0)
Case "Finaltest"
sh.Fill.ForeColor.RGB = RGB(0, 255, 0)
End Select
Sheets(2).Cells(xx, x).Value = szZugang
Exit For
End If
Next xx
Exit For
End If
Next x
End If
Next i
End Sub

Anzeige
AW: Grafik an Zelle in Datumspalte anfügen
13.01.2011 13:51:37
Beffen
Also erstmal noch danke für deine Mühe.
Ich versuche den Code ein bisschen auseinander zu nehmen und besser zu verstehen.
Ich habe nämlich abgesehen von dem Beitrag
https://www.herber.de/forum/messages/1195376.html
noch folgenden Wunsch: Das Tabellenblatt soll eine variable Länge haben. Möchte also den Kalender unbegrenzt nach unten verlängern können. wenn ich das nun umsetze, passiert im TB "Zeitstrahl" nix mehr. nur bis inkl Zeile 15 werden die Eintragungen übernommen. weiter unten aber nicht mehr.
Wo genau ist die Stelle, die die Zeilen beschränkt....finde sie einfach nicht....und dabei ist der Code noch kurz...
Grüße und vielen herzlichen Dank. Du hilfst mir unglaublich stark weiter.....
Anzeige

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige