Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Diagramm mit Text zu einer bestimmten Uhrzeit
#71
Weißt du, was ich in der WorksheetFunction.VLookup als Wert eingeben muss, damit dort die jeweilige Beschriftung genommen wird, anhand derere dann die benötigte Breite des Labels aus der Tabelle ermittelt wird? Wenn die Ereignisbeschriftung Rechts also z.B. "0,1" lautet, soll in der Klammer auf diesen Wert verwiesen werden, und über die Funktion sucht Excel dann die entsprechende Zeile der Tabelle raus und nimmt dann den Wert in Spalte 3 als Breite für das Label.
Antworten Top
#72
Hallo M...,

1. Nochmals, ich weis nicht was Excel macht, wenn man für Datenbeschriftungen die Weite oder Höhe im Makros anpasst. In den Formtierungsfenstern sind die Felder jedenfalls gesperrt.

2. Du willst doch nicht wirklich für jeden möglichen Eintrag eine Weite festlegen. Dann schmeiße Excel weg und nimm einige spitze Buntstifte.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Medic89
Antworten Top
#73
Ich lege nicht für jeden Wert einen eigenen Wert an, alle Ereignisse mit zwei Zahlen und einem Komma haben die gleiche Breite, somit kommen nur ein paar verschiedene Werte in die Liste.

Was müsste ich denn anstelle des Punkt.DataLabel.Caption einsetzen, damit die zeile funktioniert? wenn ich das makro so ausführe findet excel unter diesem punkt keine werte, wenn ich zeitweise jedoch „0,3“ einsetze, funktioniert es.
Antworten Top
#74
Hallo M...,

mit Punkt.DataLabel.Caption suchst du aber nach genau einem festen Inhalt.

Besser (und konsistenter) ist es dann eine zusätzliche Spalte in die Tabelle "Ereignisse" einzutragen. Dann kannst du über Formeln die Breite bestimmen.

1. Falls du die zusätzliche Spalte nicht einfach anhängst (was richtig ist), must du bei den Zugriffen im Makro auf die hinteren Spalten des Arrays "Ereignisse" die Zahl für die zweite Dimension um eins erhöhen.

2. Die "For Each" Schleife über alle Punkte solltest du durch eine Zählschleife ersetzen, dann hast du direkt den Wert für die erste Dimension des Arrays.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Medic89
Antworten Top
#75
Hallo Helmut,

ich glaube ich habe einen kleinen Denkfehler. Im Code auf dem Screenshot wird ja mit der If schleife für jeden Punkt in der Spalte TextBis die Formatierung angewandt, solange die Länge des Wertes größer null ist?
Mein Plan wäre nun eine Art Sverweis einzufügen, bei welchem die Breite des Labels dem Wert entspricht, der in einer extra Tabelle neben dem gerade behandelten Wert in der Schleife steht (also zb „0,3“). So kann sich doch dann Excel aus der extra Tabelle den jeweiligen Wert für die Breite ziehen, oder? Nur wie gebe ich als Suchkriterium dieses Sverweises den Wert an, der gerade im Durvhlauf der Schleife behandelt wird? Ich dachte dass sich das Punkt.DataLabel.Caption auf den jeweiligen Wert der Spalte TextBis bezieht, der grade dran ist.

2. So wie ich es verstanden habe, würdest du anstelle einer neuen Tabelle einfach eine Spalte an die bestehende Tabelle Ereignisse dranhängen, aber muss man dann nicht alle Verweise in den Makros ändern, die sich auf die Tabellen positionen, Säulen etc beziehen?
Antworten Top
#76
Hallo M...,

1. Vorab
Wie schon zweimal geschrieben würde ich die Breite (und Höhe) der Beschriftung nicht per Makro ändern.
Es war ja auch nicht abzusehen, dass sich bei einer Änderung der Höhe die Breite ändert.
Falls du es doch umsetzen willst, solltest durch den Eintrag von Konstanten im Makro erst einmal prüfen was es bewirkt. Vielleicht wird die Höhe wieder zurückgesetzt.

2. zu
Zitat:... neben dem gerade behandelten Wert in der Schleife steht (also zb „0,3“)
Du willst also für jeden in der Spalte eingetragenen Text in einer gesonderten Liste eine Breite vorgeben? Das ist ähnlich effektiv wie Buchstaben in Steintafeln zu meißeln.


3. zu
Zitat:So wie ich es verstanden habe, würdest du anstelle einer neuen Tabelle einfach eine Spalte an die bestehende Tabelle Ereignisse dranhängen
Nicht dranhängen, sondern neben dem Text hinzufügen. Was im Makro zu ändern wäre habe ich in #74 unter 1. schon geschrieben.


Also:
"Ereignisse(Z1, 8)" > "Ereignisse(Z1, 9)"
"Ereignisse(Z1, 9)" > "Ereignisse(Z1, 10)"
"Ereignisse(Z1, 10)" > "Ereignisse(Z1, 11)"  (falls du den Vorschlag mit den Linien unter den Beschriftungen berücksichtigt hast)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Medic89
Antworten Top
#77
Sorry Helmut, dann hab ich dich da missverstanden.

Wie gesagt, die Liste existiert schon, und nachdem es sich bei den möglichen Werten um Dosierungen handelt, kommen hier nur vergleichsweise wenige Werte infrage. Ich habe die Datei mit der Liste mal angehängt, nachdem es bei der Breite der Labels lediglich um die Anzahl der Zeichen geht, gibt es nur eine handvoll Breiten, darum wäre meine Idee gewesen, einfach diesen SVerweis in das Makro einzubauen.

Wenn ich im Makro eine feste Höhe und Breite für das Label festlege, funktioniert alles, der Knackpunkt ist also lediglich der SVerweis.


Angehängte Dateien
.xlsm   NPK Kombi.xlsm (Größe: 353,22 KB / Downloads: 2)
Antworten Top
#78
Hallo M...,


A) Liste mit den Breiten
1. Die Breiten in Spalte C müssen Zahlen (keine Texte) mit einem Dezimalkomma sein.
2. VBA erkennt fast alle Einträge in Spalte A nicht als Texte. Du solltest die Ziffern nach der Formatierung als Text neu eingeben.

B) In "TextBis" können jetzt nur noch Werte aus der Liste eingetragen werden, ansonsten läuft Vlookup auf einen Fehler.
Diesen kann man zwar im Makro abfangen, aber durch die Vorgabe der Höhe reagiert die Beschriftung ja nicht mehr auf die Formatierung der Ränder.

C) Es ginge
PHP-Code:
Dim Breite As Double
...
...
...
            Breite 0
            On Error Resume Next
            Breite 
WorksheetFunction.VLookup(Punkt.DataLabel.CaptionThisWorkbook.Sheets("Linienabstände").Range("A1:C20"), 3False)
            On Error GoTo 0
            
If Breite 0 Then
                Punkt
.DataLabel.Height 9.92125984251969
                Punkt
.DataLabel.Width Breite
            End 
If 
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Medic89
Antworten Top
#79
Hallo Helmut,

wow, jetzt funktioniert es so, wie es soll, vielen Dank! Ist es denn zwingend nötig, dass die Spalte A als Text formatiert ist? Denn so tut sich Excel schwer die Gesamtdosis auszurechnen bei manchen Posten.
Antworten Top
#80
Hallo M...,

und was hält dich davon ab eine Textspalte für das Vlookup im Makro und eine Zahlenspalte für die Zellformeln zu nutzen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste