Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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

Select Case Schreibweise?

Select Case Schreibweise?
Jörg-HH
Hallo zusammen
irgendwas mach ich da wohl falsch mit der Schreibweise - die SelectCase wird ignoriert. Es sollen von einem Blatt aus Zellen in einem anderen Blatt eingestellt und dadurch dort Vorgänge ausgelöst werden. Warum geht das nicht...?
Grüße - Jörg
Sub UEU_Ja_Nein()
Dim ImFormular As String
Dim wsListen As Worksheet
Set wsListen = Worksheets("Listen")
Set wsConfig = Worksheets("config")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For i = 1 To MAX_ANZAHLUEU
If Range("UEUjanein" & i) = 1 Then
Application.EnableEvents = True
Select Case ImFormular
Case i = 1: Range(wsConfig.Range("N4").Value).Value = Range("sprUmschl").Value
Case i = 2: Range(wsConfig.Range("P4").Value).Value = Range("sprIns").Value
Case i = 3: Range(wsConfig.Range("R4").Value).Value = Range("sprOuts").Value
End Select
Application.EnableEvents = False
...usw
AW: Select Case Schreibweise?
19.04.2011 23:27:58
MichaV
Moin,
das geht nicht weil Du nicht in die Hilfe geschaut hast.
Case 1: Range(wsConfig.Range("N4").Value).Value = Range("sprUmschl").Value
Case 2: Range(wsConfig.Range("P4").Value).Value = Range("sprIns").Value
Case 3: Range(wsConfig.Range("R4").Value).Value = Range("sprOuts").Value
Gruss- Micha
AW: Select Case Schreibweise?
19.04.2011 23:48:58
Jörg-HH
Hi Micha
geht trotzdem nich...
:-(
AW: Select Case Schreibweise?
20.04.2011 07:45:06
marcl
Guten Morgen Jörg,
was gibt denn ImFormular für Werte zurück? Nehmen wir an, die Variable würde Monate zurückgeben.
Select Case ImFormular
Case Januar:
Case Februar:
...
End Select
Gruß
marcl
...die Sache mit der Hilfe :-)
20.04.2011 12:15:34
Jörg-HH
Moin Micha und die Anderen
...doch - ich hatte in die Hilfe geschaut. Da steht "Testausdruck - Ein beliebiger numerischer Ausdruck oder Zeichenfolgenausdruck" - also habe ich "ImFormular" geschrieben - beliebig eben, und damit nur beschrieben, daß es sich um einen Vorgang handelt, der im Formular stattfindet. (...nich lachen jetz...)
Das Problem scheint mir zu sein, daß ich die SelectCase-Anweisung überhaupt noch nicht verstanden habe und die Hilfe da nicht so hilfreich ist. Ich habe keine Ahnung, welche Bedeutung dieser "Testausdruck" hat, und hab mich im Stillen immer gefragt, woher der Code denn eigentlich wissen soll, daß ich mit Case 1 meine, daß es um das i bei UEUjanein & i geht...
Die Erläuterung von Erich hat mich immerhin mal auf eine Spur gebracht...
Also das Problem ist: Dieses i kann die Werte 1, 2 oder 3 annehmen. Davon abhängig soll im anderen Blatt in drei verschiedenen Zellen was passieren. Wenn ich Erich richtig verstanden habe, müßte ich ImFormular als Integer deklarieren, oder?
Grüße - Jörg
Anzeige
Testausdruck
20.04.2011 12:30:52
Rudi
Hallo,
dass ist der Ausdruck, den du im folgenden mit den Case auf seinen Wert testen willst.
Gruß
Rudi
Select Case i
20.04.2011 12:43:23
Erich
Hi Jörg,
in meinem Beitrag hatte ich dich gefragt:
"Wo und wann bekommt die Variable ImFormular überhaupt einen Wert zugewiesen?
Im geposteten Code nicht - da bleibt diese Variable immer leer."
Jetzt habe ich eine Vermutung, warum du mir darauf keine Antwort gegeben hast:
Die Variable ImFormular wird hier wohl überhaupt nicht gebraucht!
Du hast eine For-Schleife mit Schleifenzähler i, fragst mit
If Range("UEUjanein" & i) = 1 Then
ab, ob in bestimmten Zellen eine 1 steht. Wenn ja, hast du ein i - sagen wir mal zwischen 1 und 3.
Und dieses i willst du doch mit Select Case abtesten, oder?
Das sähe dann so aus:
Select Case i
Case 1: Range(wsConfig.Range("N4").Value).Value = Range("sprUmschl").Value
Case 2: Range(wsConfig.Range("P4").Value).Value = Range("sprIns").Value
Case 3: Range(wsConfig.Range("R4").Value).Value = Range("sprOuts").Value
End Select
Die Variable ImFormular kannst du löschen, sofern sie nicht woanders gebraucht wird.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Select Case der falsche Weg...?
20.04.2011 14:43:55
Jörg-HH
Hi Erich
so langsam dämmert mir, daß SelectCase nicht paßt: Es werden ja alle i durchlaufen. Ich meinte das aber anders:
Ich habe drei Zellen UEUjanein1, UEUjanein2 und UEUjanein3. Dort steht jeweils eine 1 oder 2, was von jeweils zwei OptBtn gesteuert wird.
Es soll also immer nur was inUEUjanein1 ODER UEUjanein2 ODER UEUjanein3 geschehen, nicht als Schleife nacheinander. ich dachte mir so, VBA wird schon wissen, ob ich die Btn betätige, die UEUjanein1 oder UEUjanein2 oder so ansteuern :-)
Seltsamerweise machte der ganze Code alles, was er soll, bevor dieses SelectCase darin stand (Werte im selben Blatt verändern usw.) Mit dem SelectCase findet er plötzlich sogar einige KontrKästchen nicht mehr.
wat nu statt SelectCase?
Jörg
Anzeige
Bitte Fragestellung klären
20.04.2011 15:02:55
Erich
Hi Jörg,
du machst es uns nicht leicht.
"Seltsamerweise machte der ganze Code alles, was er soll, bevor dieses SelectCase darin stand "
Ich würde sagen:
Seltsamerweise hast du dieses SelectCase in einen vorher funktionierenden Code geschrieben, warum auch immer.
Du hast nicht erklärt, wozu der Code genau da ist. Unter welchen Bedingungen was getan werden soll.
Die Bruchstücke deines Codes reichen sicher nicht aus.
Wo steht der Code? Wann und wie wird er gestartet? (eher eine fachliche als eine technische Frage.)
Wovon genau hängt ab, was wann zu tun ist?
Soll es z. B. sein, dass nur höchstens eine Zelle belegt werden, danach die Schleife verlassen werden soll?
("Es werden ja alle i durchlaufen. Ich meinte das aber anders:")
Wir wissen nicht was du wie meinst.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Bitte Fragestellung klären
20.04.2011 15:19:18
Jörg-HH
ja, du hast recht- also den ganzen restlichen Code vergessen wir mal. Der Kern ist:
Es gibt 3 jeweils mit Rahmen gefaßte OptBtn-Paare, die korrespondieren mit 3 verknüpften Zellen (UEUjanein1, -2 und -3).
Im anderen Blatt gibt es drei Zellen bubu1, -2 und -3, die thematisch mit UEUjanein1, -2 und -3 zusammenhängen.
Betätigung von jeweils EINEM der drei BtnPaare soll in anderem Blatt was auslösen - also:
Klick im BtnPaar zur Zelle UEU2 soll im anderen Blatt bei bubu2 was machen.
so besser verständlich?
;-)
schon klarer, Beispielmappe wäre praktisch
20.04.2011 15:50:24
Erich
Hi Jörg,
allmählich kommt etwas Licht ins Dunkel.
Aber es ist auch noch vieles unklar. Wo befinden sich OptionButton-Paare? Gibt es eine UserForm?
Oder sind sie auf dem Tabellenblatt?
Du hast einige Zellen/Bereiche benamst. Das ist auch wohl gut so.
Deine Tabellenblätter haben bestimmte Namen, bestimmte Zellen sind anzusprechen.
Sollte ich das jetzt alles nachbauen, um einen halbwegs kompatiblen Code schreiben und auch testen zu können?
Du müsstest damit rechnen,, dass meine Tabellen und mein Code dann nicht zu deiner Anwendung passen.
Besser fände ich, wenn du hier eine Beispielmappe hochlädst, an der man konkret arbeiten kann,
am liebsten auch mit dem früher funktionierenden Code.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: hier ist ein Beispiel
20.04.2011 16:35:32
Rudi
Hallo,
mach das doch einfach mit Klick-Prozeduren.
Sub Optionsfeld4_BeiKlick()
Sheets(2).[bubu1] = "Auswahl..."
End Sub

Sub Optionsfeld5_BeiKlick()
Sheets(2).[bubu1] = "Hamburg"
End Sub

Gruß
Rudi
AW: hier ist ein Beispiel
20.04.2011 16:45:48
Jörg-HH
Rudi, an dem Klick hängt ja schon die Prozedur, die ich eingangs gezeigt hatte - also in der u.a. steht
For i = 1 To MAX_ANZAHLUEU
If Range("UEUjanein" & i) = 1 Then
...usw.
wie kann ich das da noch reinbasteln? vielleicht
renge("bubu" & i) = "Auswahl..."?
Jörg
Anzeige
...ich hab's :-)
20.04.2011 19:23:15
Jörg-HH
...Parameter übergeben heißt das Zauberwort...
Ich hatte alle drei BtnPaare an dieselbe Prozedur geknüpft - d.h. es wurden auch immer alle drei durchlaufen. Woher soll VBA wissen, bei welchem BtnPaar ich grad herumklicke?
With a little help from my friend in Frankfurt hab ich nun gelernt, daß ich für die drei BtnPaare drei unterschiedliche Einstiegsproz machen muß, die alle nur aus einer einzigen Call-Zeile bestehen und jeweils die o.e. Proz aufrufen, aber einen Parameter übergeben, der sagt, von welchem BtnPaar aus der Aufruf grad kommt.
Das kommt davon, wenn man autodidaktisch ins VBA-Wasser geschmissen wird und tausend Sachen lernt, nur nicht die Grundlagen...
Ich danke allen für die Tips! Unten steht der Code, wie er nun aussieht und läuft... meine Version enthielt in den Cases noch tausend If's - aber nun ist sie schöngeschrieben und ich hab dabei gleich noch gelernt, was ein Array ist...
Jörg
Sub UEU_Ja_Nein_1()
Call UEU_Ja_Nein(1)
End Sub
Sub UEU_Ja_Nein_2()
Call UEU_Ja_Nein(2)
End Sub
Sub UEU_Ja_Nein_3()
Call UEU_Ja_Nein(3)
End Sub
Sub UEU_Ja_Nein(ByVal i As Integer)
Dim wsListen As Worksheet
Set wsListen = Worksheets("Listen")
Set wsConfig = Worksheets("config")
Dim arrUEU() As Variant
arrUEU = Array("N4", "P4", "R4")
With Range(wsConfig.Range(arrUEU(i - 1)).Value)
If Range("UEUjanein" & i) = 1 Then
Select Case i
Case 1:
.Value = Range("sprUmschl").Value
Case 2:
.Value = Range("sprIns").Value
Case 3:
.Value = Range("sprOuts").Value
End Select
ElseIf Range("UEUjanein" & i) = 2 Then
.Value = "---"
Else
.Value = Range("sprAuswahl").Value
End If
End With

Anzeige
Beispiel nicht komplett, Rudis Lösung wohl
20.04.2011 19:26:54
Erich
Hi Rudi,
es wird nicht leichter: "an dem Klick hängt ja schon die Prozedur, die ich eingangs gezeigt hatte"
Warum ist das nicht in der Beispielmappe enthalten? (Hatte ich doch angefragt, oder?)
Bisher kamen in deinen Beiträgen noch keine Klick-Prozeduren vor! Sollten wir das ahnen oder raten?
In der Mappe steht als Aufgabenstellung:
wenn in den Gruppen "ja" gedrückt wird, soll in der korresp. Zelle auf dem anderen Blatt "Auswahl..." erscheinen
wenn in der ersten Gruppe "nein" gedrückt wird, soll in bubu1 Hamburg stehen
wenn in der zweiten Gruppe "nein" gedrückt wird, soll in bubu2 münchen
wenn in der dritten Gruppe "nein" gedrückt wird, soll in bubu3 prag
Rudi hat das beantwortet mitn Beispielcodes für die beiden Buttons des Gruppenfelds 1.
Was spricht dagegen, dass du einfach dieser beiden Mini-Prozeduren für die beiden anderen Gruppen
kopierst und anpasst? Einfacher gehts wohl wirklich nicht.
Zu welchem Zweck willst du da noch etwas "reinbasteln"? Was leistet denn Rudis Lösung nicht?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Beispiel...
20.04.2011 20:28:43
Jörg-HH
Erich, die Prozedur ist nicht enthalten, weil sie erstens 400 Zeilen lang ist, zweitens nichts mit der Beispielmappe zu tun hätte und drittens auch keinen Erkenntnisgewinn bringt.
Dann Bisher kamen in deinen Beiträgen noch keine Klick-Prozeduren vor ... versteh ich nicht: wenn ich schreibe wenn in den Gruppen "ja" gedrückt wird dann ist das doch ein Klick, oder?
Aber ich hatte ja geschrieben, daß nicht die dranhängende Proz das Problem war, sondern die Tatsache, daß ich mit drei verschiedenen BtnPaaren ein und denselben Code angesteuert habe, der dann immer auch alle drei Paare verarbeitet hat - was er nicht sollte. Das Problem lag also weniger bei SelectCase oder so, sondern bei meiner mangelnden Vorbildung zum Verständnis dieser Vorgänge.
Grüße -Jörg
Anzeige
mehrere Fehler - nicht das Select Case
20.04.2011 08:40:36
Erich
Hi Jörg,
dein Code hat mehrere Probleme, nicht aber bei der Formulierung des Select Case-Konsgrukts.
Mit
Dim ImFormular As String
deklarierst du ImFormular als String. Dieser String kann nie = 1 oder 2 sein - das sind ja nun mal Zahlen.
Also tritt im Select Case kein Fall ein.
Aber auch wenn du dort mit einem String (z. B. "1" statt 1) vergleichen würdest, könnte das nicht klappen.
Wo und wann bekommt die Variable ImFormular überhaupt einen Wert zugewiesen?
Im geposteten Code nicht - da bleibt diese Variable immer leer.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: mehrere Fehler - nicht das Select Case
20.04.2011 09:04:44
Kawensmann
Hallo Erich,
Mit
Dim ImFormular As String
deklarierst du ImFormular als String. Dieser String kann nie = 1 oder 2 sein - das sind ja nun   _
_
mal Zahlen.
Also tritt im Select Case kein Fall ein.
Teste mal folgendes

Sub Test()
Dim str As String
str = 1
Select Case str
Case 1
MsgBox "Geht doch!"
End Select
str = "1"
Select Case str
Case 1
MsgBox "Geht auch!"
End Select
str = 1
Select Case str
Case "1"
MsgBox "Selbst das geht!"
End Select
End Sub
Auch wenn das programmiertechnischer Murks ist ... :)
Gruß
Kawensmann
@Kawensmann: Ja, danke, hast recht ...
20.04.2011 10:08:00
Erich
Hi,
,... wobei nur der zweite Fall spannend ist, weil str = 1 nicht anderes als str = "1" bewirkt.
Dass im zweiten Fall bei des Case-Auswertung automatisch konvertiert wird. hatte ich ignoriert...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige