Fehlermeldung 13

Bild

Betrifft: Fehlermeldung 13
von: Fabi
Geschrieben am: 06.06.2015 18:32:12

Hallo Forum,
ich verzweifle gerade ein wenig
ich suche in eine Zeile, die letzte Spalte, die beschrieben ist,

Spalte_letzte = .Cells(3, 17).End(xlToLeft).Column

Nun möchte ich prüfen, ob in dieser Spalte, in dem Bereich „Zeile 7 bis Zeile 71“ ein Wert steht, und da kommt es zu einer Fehlermeldung (13)
If .Range(.Cells(7, Spalte_letzte), .Cells(71, Spalte_letzte)).Value = 0 Then

Wieso kommt es hier zu diesem Fehler?
Was mache ich falsch?
Danke für eure Hilfe
Fabi

Bild

Betrifft: AW: Fehlermeldung 13
von: Matthias L
Geschrieben am: 06.06.2015 18:46:05
Hallo
Das ist ja nur die Hälfte vom Code.
Wenn Du mit
.Cells(3, 17)
oder
.Range(Bereich)
arbeitest musst Du auch eine Referenz zu einem Objekt haben.
z.B.
With Worksheets("Tabelle1")
'Dein Code
End with

An Spekulationen und/oder Rätseln beteilige ich mich nicht mehr.
Gruß Matthias

Bild

Betrifft: AW: Fehlermeldung 13
von: Fabi
Geschrieben am: 06.06.2015 18:57:53
Hallo Matthias
so sieht es zur zeit aus ( ist aber nur ein Aussug davon)

sub versuch()
Dim wks As Worksheet
Dim Spalte_letzte As Long
Set wks = ActiveSheet
with wks
Spalte_letzte = .Cells(3, 17).End(xlToLeft).Column
code code code....
dann min Problem zeile
If .Range(.Cells(7, Spalte_letzte), .Cells(71, Spalte_letzte)).Value = 0 Then
dannn code code code.......
danke Fabi

Bild

Betrifft: AW: Fehlermeldung 13
von: Daniel
Geschrieben am: 06.06.2015 19:13:04
Hi
das funktioniert nicht, weil
.Range(.Cells(7, Spalte_letzte), .Cells(71, Spalte_letzte)).Value 64 verschiedne Werte sind und 0 ist nur ein Wert.
gleichzeitig viele Werte mit einem einzigen Wert vergleichen so dass ein sinnvolles WAHR oder FALSCH dabei rauskommt.
in dem Bereich von Zeile 7 bis Zeile 71 können nämlich
- alle Werte = 0 sein
- kein Wert = 0 sein
- eine beliebige Anzahl zwischen alle und keine = 0 sein.
etwas technischer ausgedrückt: du versuchst hier ein Array (alle Werte von Zeile 7 bis Zeile 71) mit einem Einzelwert zu vergleichen und das kann VBA nicht.
Gruß Daniel

Bild

Betrifft: AW: Fehlermeldung 13
von: Fabi
Geschrieben am: 06.06.2015 19:46:45
Hallo,
danke für deine Antwort
so habe ich es auch verstanden, warum dies nicht funkrionieren kann :-(
jetzt habe ich es versucht es anders zu lösen, und man siehe da es funktioniert
Lösung mit


Application.WorksheetFunction.Sum
vielleicht gibt es noch eine andere Lösung, aber so funktioniert es erst einmal
danke fabi

Bild

Betrifft: AW: Fehlermeldung 13
von: Daniel
Geschrieben am: 07.06.2015 14:37:43
HI
hängt halt auch davon ab, was man genau prüfen will und wie die Daten vorliegen.
um zu prüfen, ob alle Zellen wirklich leer sind:
Worksheetfunction.CountA(...) = 0
um zu prüfen, ob alle Zellen den Wert 0 enthalten:
Worksheetfunction.CountIf(..., "<>0") = 0
Worksheetfunction.Sum erkennt keine Texte und auch wenn -1 und +1 in zwei Zellen stehen würden, wäre die Summe 0.
Gruß Daniel

Bild

Betrifft: AW: Fehlermeldung 13
von: Matthias L
Geschrieben am: 06.06.2015 19:14:42
Hallo
Ich kann Dir nich ganz folgen, Fabi
Wenn Du Dich auf ActiveSheet beziehst, brauchst Du kein With
da sich Cells und Range immer aufs ActiveSheet bezieht
Lad die Mappe hoch, dann kann man das prüfen
Gruß Matthias

Bild

Betrifft: AW: Fehlermeldung 13
von: Daniel
Geschrieben am: 06.06.2015 19:18:54
Hi Matthias
auch wenn man sich auf das ActiveSheet bezieht, ist sinnvoll so zu programmieren, denn:
- wenn man mit mehren Blättern arbeitet, könnte es sehr schnell sein, dass du dich nicht mehr auf das aktive, sondern auf ein bestimmtes, nicht aktives Blatt beziehen willst und dann ist so der Änderungsaufwand gering, weil du nur an einer Stelle im Code das ändern musst
- wenn du mehrere Blätter hast und das Programm im Einzelstep testest, kann es schnell passieren, dass du von Hand das aktive Sheet wechselst dann laufen deine Befehle auf das falsche Blatt.
Gruß Daniel

Bild

Betrifft: AW: Fehlermeldung 13
von: Matthias L
Geschrieben am: 06.06.2015 19:40:09
Hallo Daniel
Meine Referenz läuft kaum aufs falsche Blatt!
Warum ich auf Deinen Beitrag so reagiere liegt in der Vergangenheit, Daniel
Ich brauch niemanden der versucht mich "vorzuführen", wie Du es gatan hast!
Du hast einamal versucht mich vorzuführen.(Vergessen?)
Ich kann zwar verzeihen aber ich vergesse NIE
Ich zweifel nicht an Deiner Excel/VBA-Kompetenz, aber für mich spielen andere Faktoren auch eine Rolle!
Eigentlich ist es sehr schade das solche "Köpfe" immer wieder aneinandergeraten.
Ich denke fast das Du dir der damaigen Sache gar nicht mehr bewusst bist.
Lass es jetzt einfach dabei bleiben, ok ?
Du musst nicht immer das letzte Wort haben.
Ich schätze Dich als Exce/VBA-Experte, zerstöre es bitte nicht!
Gruß Matthias

Bild

Betrifft: AW: Fehlermeldung 13
von: Luschi
Geschrieben am: 07.06.2015 08:43:56
Hallo Daniel,
mit ActiveSheet zu arbeiten ist auch in Deinem Fall ein Tanz auf der Rasierklinge. Egal wer/wie/was die Umstellung während des Prozeßdurchlaufs erwirkt, es wird mit oder ohne ActiveSheet eine Referenz auf das falsche Tabellenblatt.
Wenn ich weiß, beim Einsprung in die Prozedur ist ActiveShett die Tabelle, die ich meine/erwarte, dann mache ich das so:
Dim ws As Worksheet
Set ws = ActiveSheet
'ansonsten
Set ws = TabelleXYZ
ws.Range(...)
ws.Cells(...)
Da kann dann kommen was will, die Referenz steht/sitzt wie das Haar der Geschäftsfrau beim Flugzeugwechsel in der Werbung.
Gruß von Luschi
aus klein-Paris



Bild

Betrifft: Ziemlich genau nach VBE-Hilfe-Empfehlung! ;-) orT
von: Luc:-?
Geschrieben am: 08.06.2015 01:34:59
Gruß, Luc :-?

Bild

Betrifft: AW: Ziemlich genau nach VBE-Hilfe-Empfehlung! ;-) orT
von: Luschi
Geschrieben am: 08.06.2015 04:20:39
Hallo Luc,
kennst Du noch Jeemanden, der die Vba-Hilfe liest, wenn er glaubt, Vba-Probleme zu haben?
fragt sich Luschi
aus klein-Paris

Bild

Betrifft: Tja, ab 15/365(2013) haben die Nichtleser ...
von: Luc:-?
Geschrieben am: 08.06.2015 04:29:29
…jetzt ja 'ne tolle Ausrede, Luschi… ;-]
Morrn, Luc :-?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Fehlermeldung 13"