# Anwendungs- oder objektdefinierter Fehler



## Oliver I Koeller (22. Juli 2004)

Liebe VBA Professionals,

bei unten angefügtem Programmcode bekomme ich manchmal, manchmal nicht, in der Zeile 23

	Set BereichM = Sheets("Grafik").Range(Cells(2, 2), Cells(Zn, 3))


die Fehlermeldung Laufzeitfehler'1004': Anwendungs- oder objektdefinierter Fehler.

in der Zeile 28

    	Range(BereichM).Select

die Fehlermeldung Laufzeitfehler'1004'ie Methode 'Range' für das Objekt'_Global' ist fehlgeschlagen.


Seit mehreren Stunden versuche ich dem Grund für den Fehler auf die Spur zu kommen leider bisher vergeblich.
Ich habe den Eindruck, als wenn der Fehler willkürlich auftritt, kann ich mir aber nicht vorstellen.
Was mache ich falsch
Vielleicht kann mir hier jemand helfen? 
Vielen Dank 

Ich arbeite mit VBA unter Excel (Office 97 SP1) mit Windows XP.
(Das Programm muß auch unter Office 97 lauffähig sein, da ja nicht jeder gleich bei Erscheinen einer neuen Office-Version diese auch updatet.)

```
Sub Grafik()
		Dim Dia As ChartObject
		Dim BereichM As Range
		Dim Maxx As Single
		Dim Zn As Integer

		n = Worksheets("E").Cells(3, 4)
		With Worksheets("Grafik")
		j = 1
		ActiveSheet.ChartObjects.Delete
		' Daten für die Grafik umsortieren
		For i = 1 To n
		.Cells(j + 1, 1) = i
		.Cells(j + 1, 2) = Worksheets("E").Cells(13 + i, 2)
		.Cells(j + 1, 3) = Worksheets("E").Cells(13 + i, 3)
		.Cells(j + 2, 2) = Worksheets("E").Cells(13 + i, 4)
		.Cells(j + 2, 3) = Worksheets("E").Cells(13 + i, 5)
		.Cells(j + 3, 2) = ""
		.Cells(j + 3, 3) = ""
		j = j + 3
		Next i
		' Grössten Wert suchen der in einer Grafik als grösster Achsenwert verwendet wird
		Zn = ActiveSheet.UsedRange.Rows.Count
-->		Set BereichM = Sheets("Grafik").Range(Cells(2, 2), Cells(Zn, 3))
		Maxx = Application.WorksheetFunction.Max(BereichM)
		' MsgBox " Das Maximum ist: " & Maxx
		End With

-->		    Range(BereichM).Select
		    Set Dia = ActiveSheet.ChartObjects.Add(100, 100, 400, 400)
		    ' Dia.Name = "Positionsplan"
		    ActiveSheet.ChartObjects("Positionsplan").Activate
		    ActiveChart.ChartType = xlXYScatterLinesNoMarkers
-->		    ActiveChart.SetSourceData Source:=Sheets("Grafik").Range(BereichM), PlotBy _
		        :=xlColumns


		    With ActiveChart
		        .HasTitle = True
		        .ChartTitle.Characters.Text = "Positionsplan"
		    End With
			.
			.
			.
			.
```


----------



## Oliver I Koeller (23. Juli 2004)

Hab selbst eine Lösung nach zähem Ringen gefunden, hoffe sie funktioniert auf Dauer stabil. 


```
Sub Grafik()
Dim Zn As Integer: Dim Maxx As Single
n = Worksheets("E").Cells(3, 4)
With Worksheets("Grafik")
j = 1: Zn = 0: Maxx = 0

ActiveSheet.ChartObjects.Delete

Schleife

Worksheets("Grafik").Activate
Zn = ActiveSheet.UsedRange.Rows.Count
Maxx = Application.WorksheetFunction.Max(Range(.Cells(2, 2), .Cells(Zn, 3)))
Worksheets("Grafik").Activate
Range(.Cells(2, 2), .Cells(Zn, 3)).Select
Set Dia = ActiveSheet.ChartObjects.Add(0, 0, 400, 400)
Dia.Name = "Positionsplan"
ActiveSheet.ChartObjects("Positionsplan").Activate
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.SetSourceData Source:=Sheets("Grafik").Range(.Cells(2, 2), .Cells(Zn, 3)), PlotBy _
        :=xlColumns
.
.
.
```


----------

