Laufzeitfehler '438
hallo zusammen,
wer kann mir bei folgendem makro helfen?
nach aktivierung des makros erscheint : Laufzeitfehler '438
"Objekt übterstütz die eigenschaft bzw, methode nicht"
Makro:
Sub diagramm()
Dim Zeile As Integer
Dim Spalte As Integer
Zeile = 5
Spalte = 2
kfound = False
Sheets("Tabelle1").Activate
Do Until kfound
If ActiveSheet.Cells(Zeile, Spalte).Value <> "0" Then
' oberhalb erscheint der fehler (gelbe markierung)
Spalte = Spalte + 1
Diagramm1.SetSourceData Source:=Sheets("Tabelle1").Range("B4:GT250"), _
PlotBy:=xlRows
Else
Diagramm1.SetSourceData Source:=Sheets("Tabelle1").Range(Cells(4, 2), Cells(250, Spalte - 1)), _
PlotBy:=xlRows
kfound = True
Exit Do
End If
Loop
Sheets("Diagramm1").Activate
End Sub
hilfe?
danke im voraus
gruß sebal
Antwort schreiben
Antwort 1 von Hajo_Zi vom 13.11.2019, 12:29 Options
Hallo Sebal,
integer geht nur bis 32... und Excel hat 65536 falls Version vor 2007 also Zeile definieren als Long.
Gruß Hajo
Antwort 2 von sebal vom 13.11.2019, 12:57 Options
hallo hajo,
dankeschön, hat funktioniert, aber im code oberhalb habe ich noch ein problem, vllt kannst du auch da helfen.
und zwar,
Spalte = Spalte + 1
Diagramm1.SetSourceData Source:=Sheets("Tabelle1").Range("B4:GT250"), _
PlotBy:=xlRows
bei Diagramm1 (also dem namen meines diagramms) scheint ein problem zu sein, da ich mein diagramm gerne "TBD" nennen möchte, dann tritt jedoch der fehler ' objekt erforderlich auf.
hast du rat?
danke
gruß sebal
Antwort 3 von Hajo_Zi vom 13.11.2019, 13:07 Options
Hallo Sebal,
ich bin nicht der Diagramm Mensch.
Gruß Hajo
Antwort 4 von Beverly vom 13.11.2019, 13:50 Options
Hi Sebal,
Charts("TBD").SetSourceData Source:=Sheets("Tabelle1").Range("B4:GT250"), _
PlotBy:=xlRows
Bis später,
Karin
Antwort 5 von sebal vom 13.11.2019, 13:57 Options
hallo karin,
vielen dank, es hat funktioniert!
schönen tag
gruß sebal
Antwort 6 von sebal vom 13.11.2019, 14:32 Options
hallo nochmal,
ich hätte da noch ien anderes problem,
If ActiveSheet.Cells(Z, Sp).Value <> "0" Then
mit der obigen zeile soll ein bestimmter bereich untersucht werden, ob in diesem der wert "0" steht.
es kann jedoch sein, dass in keiner der zellen die einen wert beeinhalten eine "0" steht.
wie sage ich dem programm dass es dann die suche beenden soll?
ganzes makro:
Sub diagramm()
Dim Z As Long
Dim Sp As Integer
Z = 700
Sp = 34
kfound = False
Sheets("TBT").Activate
Do Until kfound
If ActiveSheet.Cells(Z, Sp).Value <> "0" Then
Sp = Sp + 1
Charts("TBD").SetSourceData Source:=Sheets("TBT").Range("AH699:HZ950"), _
PlotBy:=xlRows
Else
Charts("TBD").SetSourceData Source:=Sheets("TBT").Range(Cells(699, 34), Cells(950, Sp - 1)), _
PlotBy:=xlRows
kfound = True
Exit Do
End If
Loop
End sub
kannst du mir hier vllt auch helfen?
gruß sebal
Antwort 7 von Marie vom 13.11.2019, 18:14 Options
Do Until kfound ist Deine Schleife, das heisst sobald kfound true ist, bricht die ab. Also müsstest Du die begrenzen.
Versuch mal:
If ActiveSheet.Cells(Z, Sp).Value = "" Then exit do
die zeile bitte einfach zusätzlich einfügen nach der zeile Do Until kfound
Gruß Marie
Antwort 8 von sebal vom 14.11.2019, 07:25 Options
hallo marie,
vielen dank für deinen tipp, es hat funktioniert!
war dieses mal meine frage verständlicher? :-)
danke,
gruß sebal
Antwort 9 von Marie vom 14.11.2019, 14:47 Options
Ja Du lernst es langsam :-))
Gruß Marie
PS: Übrigens
Zitat:
kfound = True
Exit Do
Das Exit Do ist überflüssig, denn hier bricht die Schleife sowieso ab, wegen
Zitat:
Do Until kfound
Kannst es aber trotzdem so lassen.