Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
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

Range(cells( , ),cells( , )) in Histogramm

Range(cells( , ),cells( , )) in Histogramm
Hockmock
Hallo Forumgemeinde,
ich habe folgendes Problem. Über eine Schleife sollen Spaltenweise Histogramme erstellt werden. Dies habe ich versucht über nachstehenden Code umzusetzen - leider nur mit mäßigen Erfolg. Hauptursache hierfür ist die Anweisung ....Sheets("Daten").Range(Cells(8, i), Cells(50007, i)).
Wenn ich anstelle dessen einen direkten Bezug verwende ( Sheets("Daten").Range("C8:c50007")) wird zwar das Histogramm erstellt, meine Schleife ist aber für die Katz'.
Vielen dank im Vorfeld für eure Hilfe.
Grüße,
Andreas
************************
Sub Histo_02()
Dim i, AnzHisto As Integer
AnzHisto = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 3 To AnzHisto
Application.Run "ATPVBAEN.XLA!Histogram", Sheets("Daten").Range(Cells(8, i), Cells(50007, i) _
), ActiveSheet.Range("c200"), ActiveSheet.Range("c12:c191"), False, False, False
'Application.Run "ATPVBAEN.XLA!Histogram", Sheets("Daten").Range("C8:c50007"), ActiveSheet. _
Range("c200"), ActiveSheet.Range("c12:c191"), False, False, False
Next i
End Sub
************************

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Referenzierungsproblem?
09.11.2010 09:47:44
Erich
Hi Andreas,
was meinst du mit "leider nur mit mäßigen Erfolg" genau?
Falsches Ergebnis? Fehlermeldung?
Wo steht der Code?
Ist zum Ausführungszeitpunkt "Daten" das aktive Blatt?
Proibier mal das hier aus:
Sub abc()
MsgBox Sheets("Daten").Range(Sheets("Daten").Cells(8, 3), _
Sheets("Daten").Cells(50007, 3)).Address(, , , True)
With Sheets("Daten")
MsgBox .Range(.Cells(8, 3), .Cells(50007, 3)).Address(, , , True)
End With
' wird hier Blatt 'Daten' ausgegeben?
MsgBox Cells(8, 3).Address(, , , True)
' kann Fehler 1004 ergeben:
MsgBox Sheets("Daten").Range(Cells(8, 3), Cells(50007, 3)).Address(, , , True)
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Referenzierungsproblem?
09.11.2010 10:42:00
Hockmock
Hallo Erich,
mit mäßigem Erfolg meine ich:
1) "Fehler 1004" bei Verwendung von "..... Sheets("Daten").Range(Cells(8, i), Cells(50007, i)".
2) Wenn ich anstelle dessen ".... Sheets("Daten").Range("C8:c50007")" verwende wird zwar mein Histogramm erstellt, jedoch eine For-Next-Schleife kann ich hier NICHT verwenden.
Deine Frage: Wo steht der Code?
- zum Ausführungszeitpunkt ist das Blatt "Export" aktiv.
Dein Code ergab folgendes Ergebnis:
MsgBox1: ...Daten
MsgBox2: ...Daten
MsgBox3: ...Export
MsgBox4: ...Fehler1004
Grüße,
Andreas
Referenzierungsproblem!
09.11.2010 12:48:03
Erich
Hi Andreas,
von Tims Tipp rate ich ab.
Sheets("Daten").Range(Cells(8, i), Cells(50007, i) kann nicht funzen,
denn die Zellen Cells(8, i) und Cells(50007, i) gehören zum (aktiven) Blatt 'Export',
das konnte man an der MsgBox sehen.
Damit kann kein Bereich im Blatt 'Daten' aufgespannt werden. Daher der 1004!
Der falsche Code ausführlich:
... Sheets("Daten").Range(Sheets("Export").Cells(8, i), Sheets("Export").Cells(50007, i))
Richtig ist dagegen
... Sheets("Daten").Range(Sheets("Daten").Cells(8, i), Sheets("Daten").Cells(50007, i))
Besser und einfacher ist es, mit With zu arbeiten:
With Sheets("Daten")
... .Range(.Cells(8, i), .Cells(50007, i)) ' Punkte vor Range und 2 * vor Cells
End With
Das geht - wie du an der Spalte i sehen kannst - auch in einer Schleife.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Referenzierungsproblem!
09.11.2010 13:06:27
Hockmock
Hallo Erich,
danke für deinen Tipp. Mittels hin und her probieren habe ich ich festgestellt, dass es genau daran liegen muss. Somit lasse ich nun die Histogramme direkt im Tabellenblatt "Daten" erstellen. Nach Beendigung kopiere die kompletten Histogrammdaten nach "Export".
Funktioniert nun einwandfrei.
Danke nochmals + Grüße
Andreas
AW:
09.11.2010 10:57:35
Tim
Ich würde mir den Bezug als textvariable zusammenbasteln.
du musst dann nur die durchlaufenden Zahlen i in Buchstaben umwandeln. Das funktioniert über die Chr() Tabelle ( VGL ASCII Code ) einfach Buchstabe =chr ( i+64 ) das funktioniert so einfach bis zum Buchstaben 26=Z. Danach brauchst du doppelbuschstaben, aber auch das lässt sich einfach über Division und Rest zusammensetzen. der Bezug ergibt sich dann zu
Bezug = Buchstabe & "12:" & Buchstabe & "191"
.Range(Bezug)

Gruß
Tim
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige