xaumichi
Goto Top

VBA - Programmabsturz nach CASE Abfrage

Hallo!

Hab in einem Programm nach ein paar anderen Zeilen folgenden Code:

Select Case Range("C5")
Case Is = "JÄNNER"
Range("D7").Value = "Überstd. Dez."
Case Is = "FEBRUAR"
Range("D7").Value = "Überstd. Jän."
End Select



Hintergrund:
In einer Rolldown-Menü kann man die Monate auswählen (JÄNNER, FEBRUAR,....) geht in der Zelle C5.
Nun wollte ich in der Zelle D7 folgenden Text stehen haben:

"Überstd. *MONAT*" , wobei *MONAT* immer das ausgewählte Monat aus dem Rolldownmenü sein soll, nur in einer gekürzten Form (Jän., Feb.,....)

Problem:

Irgendwie stürzt jedoch mein Programm immer ab, sobald ich den oben genannten Code anwende.

Woran könnte das liegen??

LG Mike

Content-ID: 147362

Url: https://administrator.de/forum/vba-programmabsturz-nach-case-abfrage-147362.html

Ausgedruckt am: 24.12.2024 um 03:12 Uhr

27234
27234 22.07.2010 um 10:12:01 Uhr
Goto Top
Hallo,

statt
Case Is = "JÄNNER"  
einfach
Case "JÄNNER"  

Gruß René
xaumichi
xaumichi 22.07.2010 um 15:31:47 Uhr
Goto Top
Hm...danke für den Versuch!

Aber jetzt kommt eine Fehlermeldung:
"Die Methode 'Value' für das Objekt 'Range' ist fehlgeschlagen."

Habe das ".Value" auch schon auf ".text" umgeschrieben. Dann stürzt jedoch das programm wieder ab! face-sad

Hättest du noch eine andere idee?
Biber
Biber 22.07.2010 um 15:43:56 Uhr
Goto Top
Moin xaumichi,

ich war gestern auch erst auf der Fährte, dass es an deiner etwas ungewöhnlichen "CASE Is = "- Syntax liegen könnte.

Aber die sieht zwar krank aus, ist nichtsdestotrotz sogar in der VBA-Hilfe angegeben und tut, was sie soll.

Hat denn das Zielfeld "D7" irgendwelche erwähnenswerten Eigenschaften?
  • Ist es mit einem/mehreren Feldern "verbunden" zu einem großen Feld
  • ist es geschützt/gesperrt?
  • kannst du in Excel direkt dort "Test" oder "Hallo" oder "JÄNNER" reintippseln?

Grüße
Biber
TsukiSan
TsukiSan 22.07.2010 um 15:47:02 Uhr
Goto Top
Kann es sein, dass unter OPTIONEN--->ALLGEMEIN die "Bezugsart" auf "Z1S1" eingestellt ist?

Gruss
Tsuki
xaumichi
xaumichi 22.07.2010 um 15:54:06 Uhr
Goto Top
Zuerst war sie verbunden mit 2 weitern Zellen.
Da ich jedoch zu keinem Ergebnis gekommen bin, habe ich die Verbindung gelöscht. Allerdings hat dies nichts bewirkt!

Ja, die Zelle ist gesperrt. Hätte ich erwähnen sollen. Sry.

LG Mike
xaumichi
xaumichi 22.07.2010 um 15:55:12 Uhr
Goto Top
Ja, es war einmal "Z1S1" eingestellt. habe es aber auch schon wieder zurückgestellt. hat jedoch ebenfall keine Änderung hervorgerufen!

LG Mike
TsukiSan
TsukiSan 22.07.2010 um 16:13:23 Uhr
Goto Top
Mh,

versuch doch trotzdem mal (testenshalber)
die "RANGE" in "CELLS" zu ändern.
Also:
Range("D7").Value entspräche dann Cells(7,4).Value (oder so ähnlich!)

Gruss
Tsuki
Biber
Biber 22.07.2010 um 16:15:10 Uhr
Goto Top
Moin xaumichi,
Zitat von @xaumichi:
Ja, die Zelle ist gesperrt. Hätte ich erwähnen sollen. Sry.
Melde mich nachher nochmal.
Muss erstmal ganz kurz in dem Keller ....
da muss noch irgendwo ein Rest von diesem selbstgebrannten Lakritzschnaps liegen.
Den brauch ich jetzt...


Grüße
Biber
TsukiSan
TsukiSan 22.07.2010 um 16:17:10 Uhr
Goto Top
@Biber

Muss erstmal ganz kurz in dem Keller ....
da muss noch irgendwo ein Rest von diesem selbstgebrannten Lakritzschnaps liegen.
Den brauch ich jetzt...
bringst du mir 'nen Bier auf'm Rückweg mit?

Danke und Prost face-wink
Tsuki
xaumichi
xaumichi 23.07.2010 um 11:04:38 Uhr
Goto Top
Hallo!

Hab das mit "Cells(....)" probiert. Leider hat es auch nichts gebracht.

Da ich leider doch noch ein ziemlicher Neuling mit VBA bin habe ich nicht gleich daran gedacht:

Ich habe zu beginn eine Code-Passage:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 then Exit sub
If Intersect (Target, Range ("A1", "N50")) Is Nothing Then Exit Sub


...damit eben die Formatierungen sofort übernommen werden, wenn sich in Zellen etwas ändert.

Ich habe jetzt den starken verdacht, dass es daran liegt, dass mein Excel dann immer abstürzt. Oder??
Wenn ja, was könnte ich ändern? Würde sich was ändern, wenn die Zellen, die die den Text erhalten sollen nicht in dem Range("A1", "N50") stehen würden?

Lg Mike
xaumichi
xaumichi 26.07.2010 um 13:34:22 Uhr
Goto Top
So, jetzt hab ich noch eine Sache!
Ich hoffe, dass mir hierbei wer helfen kann!

Also, wie zuvor beschrieben, habe ich ja eine "Änderungsprüfung" (sub worksheet_change()).
Ich habe nun versucht, dass ich diese Textänderung mit den Monaten alleine in dieser Änderungsprüfung stehen habe und siehe da, es funktioniert.
Wenn ich jedoch wieder den anderen Code (mit den Formtierungen) hinzu füge, stürzt die Datei wieder ab.

Gibt es eine Möglichkeit ZWEI Sub Worksheet_Change() zu machen? (laut anderen Foren, geht es ja nicht, aber es soll möglichkeiten geben, 2 oder mehrere zu verknüpfen)
ABER wie könnte ich die beiden verknüpfen?

LG Mike
xaumichi
xaumichi 05.08.2010 um 22:46:58 Uhr
Goto Top
Ursache:
Das Change()-Ereignis kommt in eine Unendlichschleife --> irgendwann ist es zu viel und schmiert ab!
Lösung: Zähler einbauen!

LG