Anzeige
Archiv - Navigation
628to632
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
628to632
628to632
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Selection in Range-Befehl umwandeln

Selection in Range-Befehl umwandeln
02.07.2005 12:16:01
Jung
Hallo ihr alle,
ich möchte aus markierten Zellen ein Diagramm aufzeichnen lassen. Also z.B. von A5:A15,C5:C15. Im Diagramm soll nun der Bereich A auf der x-Achse und der Bereich C auf der y-Achse aufgetragen werden.
Die Anzahl der Zeilen und die Auswahl der beiden Spalten kann dabei variieren!!!
Wie muss der Range-Befehl beim Chart aussehen. Der Bereich kann doch bestimmt aus der Selection ausgelesen werden. Es ist bestimmt nicht schwierig, aber ich komme einfach nicht drauf.
Anbei mein Programm.
Worksheets("Tabelle1").Activate
Selection.Select
MsgBox ActiveWindow.RangeSelection.Address

Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Worksheets("Tabelle1").Range(?)
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End Sub
Ihr seid meine letzte Hoffnung
Grüßle Steffen

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection in Range-Befehl umwandeln
02.07.2005 13:41:44
Peter
Servus,
versuchs mal so. Tabellenblatt1 wird ja wohl schon aktiviert sein, sonst könntest du ja nicht selektieren ;)
Sub t()
Dim strtar As String, strrng, strrng1
strtar = Application.Substitute(Selection.Address, "$", "")
strrng = Left(strtar, InStr(1, strtar, ":", 1) - 1)
strrng1 = Right(strtar, (Len(strtar) - Len(strrng) - 1))
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=Worksheets("Tabelle1").Range(strrng, strrng1)
.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End With
End Sub

MfG Peter
AW: Selection in Range-Befehl umwandeln
02.07.2005 13:56:20
Peter
Servus,
hab übersehen das es nicht unbedingt zwei zusammenhängende Bereiche sein müssen.
Der folgende Code beinhaltet sowohl 2 getrennte als auch zusammenhängende Bereiche.
Sub t()
Dim strtar As String, strrng, strrng1
strtar = Application.Substitute(Selection.Address, "$", "")
If InStr(1, strtar, ",", 1) > 0 Then
strrng = Left(strtar, InStr(1, strtar, ",", 1) - 1)
Else
strrng = Left(strtar, InStr(1, strtar, ":", 1) - 1)
End If
strrng1 = Right(strtar, (Len(strtar) - Len(strrng) - 1))
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=Worksheets("Tabelle1").Range(strrng, strrng1)
.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End With
End Sub

MfG Peter
Anzeige
AW: Selection in Range-Befehl umwandeln
02.07.2005 18:23:09
Steffen
Hi Peter,
dank dir für deine superschnelle Antwort.Es war meine erste Frage in diesem Forum und ich bin total begeistert.Hab mit einer Antwort nicht vor Montag gerechnet.
Hab das Programm auch schon ausprobiert und es funktioniert fast so wie ich es möchte. Nur, wenn ich Spalte A und C miteinander vergleiche, habe ich auch die Werte von Spalte B enthalten.Ich hätte jedoch gerne nur A und B.
Kann es leider nicht selbst ändern,da mir manche Befehle in deinem Programm unbekannt sind.
Weißt du vielleicht,was zu ändern ist?
Bin dir total dankbar.
Grüßle Steffen
AW: Selection in Range-Befehl umwandeln
02.07.2005 20:29:45
Peter
Servus,
das Problem an der Sache ist das Excel (bzw. ich) die Variablen strrng, strrng1 als Strings darstellt (in etwa so "A1:A7" , "C1:C7"). Benötigt würde aber für die untere Codezeile das ganze in etwa so "A1:A7 , C1:C7".
Leider bekomm ich das mit meinen Fähigkeiten im mom. nicht geändert.
Deshalb Frage noch offen, ich versuch zwar weiter Nachzudenken, vieleicht hat jemand aber schneller ne Lösung in peto. Sry.
.SetSourceData Source:=Worksheets("Tabelle1").Range(strrng, strrng1), _
PlotBy:=xlRows

MfG
Peter

Anzeige
union(strrng,strrng1)
02.07.2005 21:49:08
ransi
hallo
habe das alles nich so richtig nachvollzogen, aber schau dir mal den befehl union() an.
beispiel:
Public

Sub test()
Dim strrng As Range
Dim strrng1 As Range
Set strrng = Range("A1:A7")
Set strrng1 = Range("C1:C7")
MsgBox Union(strrng, strrng1).Address(False, False)
End Sub

ransi
AW: union(strrng,strrng1)
02.07.2005 22:24:42
AS
Na, wie wäre es denn mit Selection.Range , hmmmmm...?
AS
AW: union(strrng,strrng1)
02.07.2005 22:35:37
Peter
Servus Steffen und ransi,
der entscheidende Tip kommt von ransi (siehe Code unten). Zu Bedenken gilt allerdings das du hierbei nicht den Bereich von z.B. A1 bis C10 markieren darfst, sondern den Bereich A1 bis A10 + Strg-Taste + C1 bis C10 markieren.
Hoffe es hilft. Danke nochmal ransi.
Sub t()
Dim strtar As String, strrng, strrng1, strrng2
strtar = Application.Substitute(Selection.Address, "$", "")
If InStr(1, strtar, ",", 1) > 0 Then
strrng = Left(strtar, InStr(1, strtar, ",", 1) - 1)
Else
strrng = Left(strtar, InStr(1, strtar, ":", 1) - 1)
End If
strrng1 = Right(strtar, (Len(strtar) - Len(strrng) - 1))
strrng2 = Application.Union(Range(strrng), Range(strrng1)).Address(False, False)
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=Worksheets("Tabelle1").Range(strrng2)
.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End With
End Sub

MfG Peter
Anzeige
AW: union(strrng,strrng1)
03.07.2005 14:11:20
Steffen
Hallo Peter und ransi,
hab das Programm gerade ausprobiert und es funktioniert einfach perfekt.
Danke vielmals für eure Hilfe.Echt spitze.
Vieleicht brauch ich demnächst nochmals eure Hilfe, wenn ich eine Schleife für das selbe
Programm schreiben muss. Aber das weiß ich noch nicht.
Hoffe nur, dass ich euch irgendwann auch mal ein paar Tips geben kann. Aber so wie es
aussieht kennt ihr euch wesentlich besser aus.
Wünsch euch noch einen schönen Sonntag
Grüßle Steffen
AW: union(strrng,strrng1)
03.07.2005 16:23:34
Nepumuk
Hallo Steffen,
&gt&gtHoffe nur, dass ich euch irgendwann auch mal ein paar Tipps geben kann. Aber so wie es aussieht, kennt ihr euch wesentlich besser aus.&lt&lt
Sehr löblich deine Absicht. So wie du, haben wir alle mal angefangen. Also dran bleiben und einfach mit machen. Es gibt keine bessere und billigere Methode VBA zu lernen.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige