Supportnet / Forum / Tabellenkalkulation
Laufzeitfehler '438
Frage
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 1 von Hajo_Zi
Hallo Sebal,
integer geht nur bis 32... und Excel hat 65536 falls Version vor 2007 also Zeile definieren als Long.
Gruß Hajo
integer geht nur bis 32... und Excel hat 65536 falls Version vor 2007 also Zeile definieren als Long.
Gruß Hajo
Antwort 2 von sebal
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
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
Hallo Sebal,
ich bin nicht der Diagramm Mensch.
Gruß Hajo
ich bin nicht der Diagramm Mensch.
Gruß Hajo
Antwort 4 von Beverly
Hi Sebal,
Bis später,
Karin
Charts("TBD").SetSourceData Source:=Sheets("Tabelle1").Range("B4:GT250"), _
PlotBy:=xlRowsBis später,
Karin
Antwort 5 von sebal
hallo karin,
vielen dank, es hat funktioniert!
schönen tag
gruß sebal
vielen dank, es hat funktioniert!
schönen tag
gruß sebal
Antwort 6 von sebal
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
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
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
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
hallo marie,
vielen dank für deinen tipp, es hat funktioniert!
war dieses mal meine frage verständlicher? :-)
danke,
gruß sebal
vielen dank für deinen tipp, es hat funktioniert!
war dieses mal meine frage verständlicher? :-)
danke,
gruß sebal
Antwort 9 von Marie
Ja Du lernst es langsam :-))
Gruß Marie
PS: Übrigens
Das Exit Do ist überflüssig, denn hier bricht die Schleife sowieso ab, wegen
Kannst es aber trotzdem so lassen.
Gruß Marie
PS: Übrigens
Zitat:
kfound = True
Exit Do
kfound = True
Exit Do
Das Exit Do ist überflüssig, denn hier bricht die Schleife sowieso ab, wegen
Zitat:
Do Until kfound
Do Until kfound
Kannst es aber trotzdem so lassen.

