Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1036to1040
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
Inhaltsverzeichnis

Fehler im Code Hilfe

Fehler im Code Hilfe
30.12.2008 19:17:00
Fred
Hallo zusammen
Ich benutze das unten stehende Modul um werte aus einer Zelle auszulesen und zu zählen. Im Prinzip funktioniert das auch, wenn ich jedoch On Error Resume Next entferne, kommt ein Debuggfehler bei Case"A"
Ich weissnicht woran das liegen könnte. Dadurch wird naturlich Case "A" auch nicht aufgezählt und meine berechnungen sind immer ungenau.
Weiss jemand Rat

Sub Zaehlen()
ActiveSheet.Unprotect Password:="1969"
Sheets("Bewertung in der Qualimatrix").Range("A14:H14").ClearContents
Dim ws As Worksheet
Dim strStartblatt As String
strStartblatt = "Bewertung in der Qualimatrix"
With Sheets(strStartblatt)
For Each ws In Worksheets
If Not ws.Name = .Name Then
On Error Resume Next
Select Case ws.Range("M4").Value
Case "A"
.Range("A14").Value = .Range("A14").Value +1
Case "B"
.Range("B14").Value = .Range("B14").Value + 1
Case "C"
.Range("C14").Value = .Range("C14").Value + 1
Case "D"
.Range("D14").Value = .Range("D14").Value + 1
Case "E"
.Range("E14").Value = .Range("E14").Value + 1
Case "F"
.Range("F14").Value = .Range("F14").Value + 1
Case "G"
.Range("G14").Value = .Range("G14").Value + 1
Case "H"
.Range("H14").Value = .Range("H14").Value + 1
End Select
End If
Next
End With
ActiveSheet.Protect Password:="1969", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


Grüße Fred

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler im Code Hilfe
30.12.2008 19:40:27
Uwe
Hi Fred,
"Debugfehler" ist reichlich ungenau. In VBA gibt es Fehlermeldungen und die sind immer sehr hilfreich beim Beheben von Fehlern. Die solltest Du uns nicht verheimlichen.
Dein Code läuft bei mir problemlos. Es müsste also an Deinen Daten liegen!?
Ich hätte getippt, das in Zelle A14 ein Text statt einer Zahl steht, aber da Du diesen Beriech vorher löscht, kann das nicht sein (Mich wundert übrigens was Dein Code bezwecken soll, sieht nach hochzählen aus, aber Du löscht den Bereich jedesmal vorher, daher kann höchsten 1 drin stehen!?)
Gruß
Uwe
(:o)
AW: Fehler im Code Hilfe
30.12.2008 19:47:00
Fred
Hallo Uwe
Der Debugger zeigt an Typen unverträglich und Case "A" ist selektiert.
Im übriegen Zähle ich damit die Zelle M4 aus je nach dem welcher Buchstabe darin steht. steht ein a soll er eine 1 in vorgegebene Zelle schreiben usw. Das Ganze für 50 Sheets
Grüße Fred
Anzeige
AW: so ok?
30.12.2008 19:45:00
Erich
Hallo Fred,
vermutlich hast du Fehlerwerte in M4 in einem der Blätter stehen - dann geht der Vergleich mit "A" schief.
Im folgenden Code wird der M4-Inhalt mit "ISTTEXT()" geprüft:

Sub Zaehlen2()
Dim ws As Worksheet
Dim strStartblatt As String
Dim lngSp As Long
ActiveSheet.Unprotect Password:="1969"
strStartblatt = "Bewertung in der Qualimatrix"
With Sheets(strStartblatt)
.Range("A14:H14").ClearContents
For Each ws In Worksheets
If Not UCase(ws.Name) = UCase(.Name) Then
If Application.IsText(ws.Range("M4")) Then
If Len(ws.Range("M4")) = 1 Then
lngSp = Asc(ws.Range("M4")) - 64
If lngSp > 0 And lngSp 

Frage: Ist mit ActiveSheet zufällig das Blatt gemeint, das mit strStartblatt bezeichnet ist?
Dann solltest du das Unprotect und unten das Protect in die With-Klammer setzen
und auf "ActiveSheet" verzichten.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: so ok?
30.12.2008 20:13:00
Fred
Hallo Erich
Dein Code bringt das Gleiche Ergebniss wie mein Code A wird nicht gezählt
Grüße Fred
AW: so ok - mit Beispielmappe
31.12.2008 00:04:18
Erich
Hi Fred,
bei mir funzt der Code. Teste mal in dieser Mappe: https://www.herber.de/bbs/user/57967.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Fehler im Code Hilfe
30.12.2008 20:55:42
Daniel
Hi
bei Fehlermeldungen sollte man immer die Datei hochladen, die den Fehler enthält, sonst ist es Rätselraten. Schließlich wird der Fehler ja nicht immer vom Code sondern manchmal auch von den Daten verursacht.
in deinem Fall enthält die Zelle M4 eines Blattes wahrscheinlich ein Fehlerwert (#NV, #DIV/0 oder was ähnlichen), das bringt zumindest bei mir das Makro zum Stoppen.
als Abhilfe müsstest du mit einer zusätzlichen IF-Abfrage testen, ob WS.RANGE("M4") einen Fehler enthält.
das Makro müsste dazu so erweitert werden:

Sub Zaehlen()
Sheets(1).Range("A14:H14").ClearContents
Dim ws As Worksheet
With Sheets(1)
For Each ws In Worksheets
If Not ws.Name = .Name Then
 If Not IsError(ws.Range("A1")) Then
Select Case ws.Range("A1").Value
Case "A"
.Range("A14").Value = .Range("A14").Value + 1
Case "B"
.Range("B14").Value = .Range("B14").Value + 1
Case "C"
.Range("C14").Value = .Range("C14").Value + 1
Case "D"
.Range("D14").Value = .Range("D14").Value + 1
Case "E"
.Range("E14").Value = .Range("E14").Value + 1
Case "F"
.Range("F14").Value = .Range("F14").Value + 1
Case "G"
.Range("G14").Value = .Range("G14").Value + 1
Case "H"
.Range("H14").Value = .Range("H14").Value + 1
End Select
 End If
End If
Next
End With
End Sub


Gruß, Daniel
ps. der Zellbezug und die Sheetnamen müssten noch angepasst werden, das hab ich fürs einfachere Testen geändert.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige