Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
612to616
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
612to616
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufzeitfehler

Laufzeitfehler
24.05.2005 17:45:11
Axel
Hallo,
kann mir jemand weiterhelfen.
bei dieser Zeile im Makro:
Reihe = Range(ActiveSheet.cells(sim.Row, n), ActiveSheet.cells(sim.Row + a, n))
bekomme ich immer eine Fehlermeldung: "Laufzeitfehler 438 Objekt unterstützt diese Eigenschaft oder Methode nicht."
Wenn ich anstatt "ActiveSheet" - "Sheet!Mappe1" schreibe, klappt es. Wo kann mein Fehler liegen?
Vielen Dank für Eure Antworten.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler
24.05.2005 17:49:25
Axel
Edit:
Ich meinte natürlich nicht "Sheet!Mappe1" sondern Sheets("Mappe1")
AW: Laufzeitfehler
24.05.2005 17:52:37
Horst
Was soll sim.Row sein?
mfg Horst
AW: Laufzeitfehler
24.05.2005 17:57:07
Axel
Hallo Horst,
sim ist eine ausgewählte Zelle (über Messagebox) und sim.row ist die Zeilenangabe davon.
Axel
AW: Laufzeitfehler
24.05.2005 17:59:12
Horst
Hi,
poste mal den ganzen Code einschließlich Variablendeklarationen.
mfg Horst
AW: Laufzeitfehler
24.05.2005 18:12:07
Axel
Hallo Horst,
hier der komplette Code. Im Prinzip will ich dieses Sheets("Zug") überall ersetzen durch ActiveSheet oder etwas analoges, was mir ermöglicht, mein Makro auf beliebige Arbeitsblätter anzuwenden.
Vielen Dank,
Axel

Sub Abfrage()
If MsgBox("Diagrammerstellung?", vbQuestion + vbYesNo, "Hallo!") = vbNo Then
MsgBox " Ende...", vbExclamation
End                'Programm wird beendet
Else
Call Diagrammerstellung
End If
End Sub


Sub Diagrammerstellung()
' Diagrammerstellung Makro
' Makro am 24.04.2005 von   aufgezeichnet
' Tastenkombination: Strg+a
Dim Geschwvektor As Range
Dim Spaltenauswahl As Range
Dim sim As Range
Dim Vergleich As Range
Dim Reihe As Range
Set Geschwvektor = Application.InputBox( _
prompt:="Auswahl des Geschwindigkeitsvektors.", _
Title:="Auswahl des Geschwindigkeitsvektors", Type:=8)
Set Spaltenauswahl = Application.InputBox( _
prompt:="Für Anzahl der Diagramme bitte entsprechende Anzahl Zellen auswählen.", _
Title:="Auswahl der Spalten", Type:=8)
Set sim = Application.InputBox( _
prompt:="Auswahl Zelle Start Werte", _
Title:="Auswahl der Zelle", Type:=8)
Set Vergleich = Application.InputBox( _
prompt:="Auswahl Zelle Start Vergleich", _
Title:="Auswahl der Zelle", Type:=8)
Dim zell As Object
Dim b As Integer
b = 0
For Each zell In Spaltenauswahl
b = b + 1
Next zell
Dim zell2 As Object
Dim a As Integer
a = 0
For Each zell2 In Geschwvektor
a = a + 1
Next zell2
For n = 2 To b
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
' Auswahl Spalten 2 bis n
ActiveChart.SetSourceData Source:=Sheets("Zug").Range(Sheets("Zug").cells(1, n), _
Sheets("Zug").cells(a, n)), PlotBy:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = Geschwvektor   'das bleibt immer gleich
ActiveChart.SeriesCollection(2).XValues = Geschwvektor   'das bleibt immer gleich
Reihe = Range(ActiveSheet.cells(sim.Row, n), ActiveSheet.cells(sim.Row + a, n))
ActiveChart.SeriesCollection(2).Values = Reihe
'ActiveChart.SeriesCollection(3).XValues = "=Zug!R18C1:R30C1"  'das bleibt immer gleich
ActiveChart.SeriesCollection(3).XValues = Geschwvektor
'Reihe = "=Zug!R34C" & n & ":R46C" & n
Reihe = Range(Sheets("Zug").cells(Vergleich.Row, n), Sheets("Zug").cells(Vergleich.Row + a, n))
ActiveChart.SeriesCollection(3).Values = Reihe
ActiveChart.Location Where:=xlLocationAsObject, Name:="Zug"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = _
"Geschwindigkeit [km/h]"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.SeriesCollection(3).Select
ActiveChart.SeriesCollection(3).AxisGroup = 2
ActiveChart.Legend.Select
ActiveChart.Axes(xlValue, xlSecondary).Select
Selection.TickLabels.NumberFormat = "0.000E+00"
With ActiveChart.Axes(xlValue, xlSecondary)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MinorUnitIsAuto = True
'.MajorUnit = 0.000001             'Skalierung automatisiert
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlValue).Select
ActiveChart.PlotArea.Select
ActiveChart.Axes(xlValue).MajorGridlines.Select
Selection.Delete
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).LegendKey.Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlNone
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlAutomatic
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With
ActiveChart.Legend.LegendEntries(2).LegendKey.Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With
Next
MsgBox "Durchlauf beendet"
Exit Sub
End Sub

Anzeige
AW: Laufzeitfehler
24.05.2005 18:17:04
Horst
Hi,
das geht nicht mit ActiveSheet. Setz am Anfang eine Objektvariable:
Dim wks as Worksheet
Set wks = Sheets("DeineTabelle")
a = wks.Range(wks.Cells(x,y),wks.cells(i,j))
mfg Horst
AW: Laufzeitfehler
24.05.2005 18:40:09
Axel
Hallo Horst,
ich hab Deinen Code entsprechend eingefügt. Aber trotzdem erhalte ich die Fehlermeldung: "Objektvariable oder With-Blockvarible nicht festgelegt". Woran kann das liegen? Dein Code legt das doch eindeutig fest?
Danke, Axel
AW: Laufzeitfehler
24.05.2005 19:23:02
Horst
Set Reihe = wks.Range(wks.Cells(x,y),wks.cells(i,j))
Reihe ist ein Range, also ein Objekt und muss mit Set gestzt werden.
mfg Horst
AW: Laufzeitfehler
24.05.2005 20:41:46
Axel
Hallo Horst,
vielen Dank für Deine Hilfe. Das Makro läuft jetzt ohne Fehlermeldungen.
Aber hast Du noch einen Tipp, wie ich es schaffe, dass das Makro auf das gerade geöffnete Sheet zugreift? Momentan ist ja das Worksheet noch auf "Zug" festgelegt. Geht es nicht irgendwie, dass man das verallgemeinern kann? Mit "Select" bin ich da nicht richtig weitergekommen.
Anzeige
AW: Laufzeitfehler
24.05.2005 20:45:48
Horst
Set Reihe = Range(Cells(x,y),cells(i,j))
So bezieht es sich immer auf das aktive Blatt.
mfg Horst
AW: Laufzeitfehler
24.05.2005 21:11:50
Axel
Hallo Horst,
habe Deinen letzten Vorschlag ausprobiert, bekomme jetzt Fehlermeldung: "Laufzeitfehler 1004: Die Methode Cells für das Obect '_Global' ist fehlgeschlagen". Diesen Fehler hatte ich schonmal. Kann es damit zusammenhängen, dass mein Makro in der persönl. Makroarbeitsmappe abgespeichert ist? Ich hatte bis jetzt noch keine Lösung für diesen Fehler gefunden, hab auch schonmal im Forum danach gefragt, aber seit gestern ist der threat verschwunden.
Ich hoffe ich geh Dir nicht langsam auf die Nerven...
Anzeige
AW: Laufzeitfehler
24.05.2005 21:41:19
Horst
"Kann es damit zusammenhängen, dass mein Makro in der persönl. Makroarbeitsmappe abgespeichert ist?"
Ja klar, dann musst du das aktive Workbook referenzieren, sonst wirkt der Code
in der personl.xls.
Dim wb as workbook,ash as worksheet
Set wb = activeworkbook
set ash = activesheet
Dann muss das Blatt aber auch aktiviert sein.
mfg Horst
Makro läuft!
24.05.2005 22:24:03
Axel
Hallo Horst,
vielen Dank für Deine Hilfe, dass Makro läuft endlich ohne Fehlermeldungen.
cu,
Axel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige