Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
letzte Zeile in letzter Spalte
10.06.2008 15:26:42
Christian
Hi Leute
Ich lese aus eine TXT-Datei Werte aus
z.B.:
95,94.8,94.8,95.1,94.9
97,97.1,97.1,97,97.2
100.1,100,100.2,100.1,100
Jede Zeile der TXT Datei wird in eine Excel-Zelle geschrieben.
Jede Zeile hat genau die selben werte (in diesem Fall 5 Werte, kann aber unterschiedlich sein).
Nun splitte ich diese "Zellen" auf, so dass die Werte in einer Spalte stehen.
z.B.:
A B C
95 97 100.1
94.8 97.1 100
94.8 97.1 100.2
usw.
Nun will ich ein Diagramm erstellen.
Und hier habe ich das Problem, das ich nicht weiß wie ich in VBA den Range von (in diesem Beispiel) A1-C5 definieren kann, es kann nämlich beim nächsten mal schon A1 - G23 sein
Kann mir jemand helfen, habe leider keine Info dazu in den Foren erhalten.
Anbei eine Datei, wo ich nur eine Zeile habe, und daraus ein diagramm erstelle. Nun soll ich es aber umlegen auf mehrere "Zeilen".
https://www.herber.de/bbs/user/52981.xls
Im endeffekt habe ich dann statt einer Linie x-viele Linien im Diagramm
Bitte um Hilfe
Danke
Christian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile in letzter Spalte
10.06.2008 15:34:00
Bertram
Hallo Christian,
habe mir nicht deinen kompletten Code zu Gemüte geführt, aber wie wäre etwas in der Art:
Variable rngDerDiagrammbereich (definiert als Range) und dann
Set rngDerDiagrammbereich = Sheets("Tabelle2").Range("A1").CurrentRegion
Gruß
Bertram

AW: letzte Zeile in letzter Spalte
10.06.2008 16:01:51
Christian
Hi Bertram
Da ich in VBA nicht wirklich toll bin, und das alles nur zusammenkopiert und ein wenig logisch adaptiert habe, bringt mich deine Antwort leider nicht weiter.
Vielleicht nochmal zu meinem Code:
Hier die relevanten Zeilen (glaube ich)
Beim Bereich ermittlen gehe ich nur auf die Spalte a
wenn ich den str2 auf die letzte Zeile in der letzten vorhandenen Spalte setzen könnte, wäre mir glaub ich schon viel geholfen.
Sg
Christian
'******************************
'Bereich für Diagramm ermitteln
'******************************
Worksheets("Tabelle2").Select
Dim str1 As String
Dim str2 As String
Range("a1").Select
str1 = ActiveCell.Offset(0, 0).Address
'letzte "neue" in Spalte a
str2 = Range("a65536").End(xlUp).Address
Range(str1 + ":" + str2).Select
'******************
'diagramm erstellen
'******************
Worksheets("Tabelle1").Select
Dim Minimumwert As Integer
Dim Maximumwert As Integer
Minimumwert = Range("b45") - 2 * Range("b49")
Maximumwert = Range("b45") + 2 * Range("b47")
Charts.Add
ActiveChart.ChartType = xlLineStacked
ActiveChart.SetSourceData Source:=Sheets("Tabelle2").Range(str1 + ":" + str2), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.text = "Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.text = "Wert"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.text = "Messung"
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False
ActiveChart.HasDataTable = False
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScale = Minimumwert
.MaximumScaleIsAuto = False
.MaximumScale = Maximumwert
.MinorUnitIsAuto = True
.MajorUnit = 5
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabelSpacing = 5
.TickMarkSpacing = 5
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With

Anzeige
AW: letzte Zeile in letzter Spalte
11.06.2008 08:39:45
Bertram
Hallo Christian,
hier mal ein kleines Bsp. mit deinem Code: https://www.herber.de/bbs/user/52997.xls
Ich habe auch meinen Codeteil eingebaut. Übrigens läßt sich auf .Select sehr oft verzichten. Überflüssige Codeteile solltest du auch entfernen. Z.B. in
str1 = ActiveCell.Offset(0, 0).Address
ist das Offset(0,0) nuztlos, da du auf die Zelle verweist, die 0 Zeilen ud 0 Spalten von der aktiven Zelle entfernt ist, also wieder die aktive Zelle selbst.
Gruß
Bertram

AW: letzte Zeile in letzter Spalte
11.06.2008 14:17:32
Christian
Hi Bertram
Danke, das ist genau (oder so in etwa halt) das was ich meine.
Nur sollte man nicht alles addieren, sondern jede Spalte hat einen eigenen Wert.
Jedoch stellt sich bei mir folgendes Problem:
Ich importiere ja die Werte der Spalten aus einer TXT-Datei
Jetzt habe ich lange versucht deinen Code in mein File einzubinden.
Bin aber kläglich daran gescheitert.
Jetzt bin ich jedoch daraufgekommen, sobald ich einen Doppelklick in alle Zellen mache, dann funktioniert es.
Was kann das sein?
d.h. wenn ich nur die Spalten nehme, so wie ich sie erstelle, funktioniert das Diagramm nicht.
Auch wenn ich eine Zeile aus meiner xls-Datei in deine kopiere, funktioniert der Code nicht mehr
Mache ich jedoch in jede der kopierten Zellen einen Doppelklick, funktioniert es wieder.
Weißt du etwa hier noch eine Lösung?
Ich weiß, ich bin schon nervig, aber es wäre ganz nett wenn du mir nochmal helfen könntest
Danke
Christian

Anzeige
AW: letzte Zeile in letzter Spalte
11.06.2008 15:33:08
Bertram
Hallo Christian,
habe momentan keine Zeit, aber ich schau's mir später nochmal an. Ich stelle solange auf offen, evtl findet sich inzwischen ja ein anderes Helferlein.
Gruß
Bertram

AW: letzte Zeile in letzter Spalte
11.06.2008 16:01:00
Christian
kein PRoblem, nur kein Stress damit.
Bin selbst auch am düfteln, wenn ich fertig bin sag ich bescheid, sollte das gehen *g*

AW: letzte Zeile in letzter Spalte
11.06.2008 16:45:30
Christian
Hi Bertram,
Also, ich hab es leider nicht geschaft
Es ist auch irgendwie komisch
Die Werte, die in Tabelle 2 stehen, da kann ich auch kein Diagramm händisch drüber erstellen.
Ich glaube, der Code wäre jetzt richtig, aber das mit den Zahlen ist so ein Problem
Auch wenn du Teile von meiner Tabelle in dein Excelfile kopierst, dann geht dein File auch nicht mehr wie gewünscht. Ich nehme mal an, dass du die Werte in der Tabelle händisch eingegeben hast.
Ich habe auch schon probiert, am ende ein Leerzeichen einzufügen, und danach gleich wieder wegzulöschen, ob sich damit die Zahlen verwerten lassen, leider auch Fehlanzeige. Ich bin am Ende mit meinem Latein.
Ich hänge hier nochmal mein File an, wie gesagt, ich glaube der Code ist richtig, aber die Zahlen haben irgendwas nicht weiterverwertbares an sich. Habe auch schon Formatwechsel probiert, hilft auch nichts.
https://www.herber.de/bbs/user/53008.xls
Danke für Deine Hilfe
Christian

Anzeige
AW: letzte Zeile in letzter Spalte
12.06.2008 13:16:00
Bertram
Hallo Christian,
die importierten Werte werden nicht als Zahlen erkannt. Hab mal auf die Schnelle das hier noch eingebaut (bevor du das Diagramm erstellst):
Dim Zelle as Range 'in deinen Deklarationsteil
For Each Zelle In rngDerDiagrammbereich
Zelle.Value = Zelle.Value * 1
Next Zelle
Dann funktioniert's wieder.
Gruß
Bertram

AW: letzte Zeile in letzter Spalte
12.06.2008 18:01:59
Christian
Hi Bertram
Funkioniert perfekt. Mit einem Zeichen einfügen,. soweit hab ich gedacht, aber mit 1 multiplizieren nicht.
Hat wunderbar geklappt. Ohne Dich wäre das nichts geworden.
Herzlichsten Dank
Christian

Anzeige
AW: letzte Zeile in letzter Spalte
12.06.2008 13:32:00
Bertram
Hallo nochmal,
habe gerade nochmal über deinen Code geschaut. Wie gesagt, deine Werte sind Texte. Bei deiner TextToColumns-Methode holst du dir die Werte als Text (1) und nicht als General (0). Wenn ud das änderst, sollte es ohne den Zusatz des anderen Posts funktionieren.
Gruß
Bertram

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige