Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Bekomme Select Case Anweisung nicht hin
Gehe zu Seite 1, 2  Weiter
zurück: Zellen nach farbe abfragen weiter: makro für kopie eines zellbereichs (in den Zwischenspeicher) Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 12:38
Rufname: Käpsele

Bekomme Select Case Anweisung nicht hin - Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo,

ich habe eine umfangreiche If - Else Bedingung, die ich gerne in eine übersichtlichere Select Case Anweisung ändern möchte.

Leider reichen mal wieder meine Kenntnisse nicht aus, um den Code so zu schreiben, dass er auch funktioniert Sad

Das Ziel ist es, jeweils zu prüfen, ob die Zellen leer sind.

Hier mein Ansatz:
Code:
Private Sub OptionButton_Flaecheinhalt_Ja_Click()

With Tabelle23

Select Case .Value 'hier liegt wohl (einer) der Fehler?

Case WorksheetFunction.CountA("AI18,AN13,AD18,AN10") > 0
MsgBox "Variante 1"

Case WorksheetFunction.CountA("G18,N13") > 0
MsgBox "Variante 2"

Case WorksheetFunction.CountA("AN35,AN32") > 0
MsgBox "Variante 3"

Case WorksheetFunction.CountA("N32") > 0
MsgBox "variante 4"

Case Else
MsgBox "Alle Zellen leer?"

End Select
End With
End Sub


Wenn mir jemand sagen könnte, was ich falsch mache, wäre super.

Ich habe bemerkt, dass die WorksheetFunction.CountA Funktion im Select Case nicht angeboten wird, aber wie dann...?


vielen Dank für die Antwort im Voraus!

schöne Grüße
Käpsele
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Jun 2011, 13:08
Rufname:


AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hi

Code:
With Tabelle23

 Select Case .Value


ausgeschrieben heißt das:

Tabelle23.Value

eine Tabelle hat aber keine .Value - Eigenschaft, du musst da aufjeden Fall noch die Zelle angeben, deren Wert du auslesen willst.

desweitern solltest du dir nochmal die Hilfe zu "Select Case" anschauen oder mal danach Googeln, so wie es aussieht hast die Funktionsweise noch nicht richtig verstanden.

Gruß, Daniel
RO_SCH
Mädchen für (fast) alles


Verfasst am:
11. Jun 2011, 13:20
Rufname: Roland
Wohnort: Nürnberg

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hi,

bau dir dafür doch eine Function.

Ich gehe davon aus, alle der angegebenen Zellen in der Range müssen einen Wert entalten, damit die Bedingung als Wahr zurückgegeben wird.
Code:
Sub x()

If RangeTesten([N32]) Then
   MsgBox "Variante 4"
ElseIf RangeTesten([AN35,AN32]) Then
   MsgBox "Variante 3"
ElseIf RangeTesten([G18,N13]) Then
   MsgBox "Variante 2"
ElseIf RangeTesten([AI18,AN13,AD18,AN10]) Then
   MsgBox "Variante 1"
Else
   MsgBox "Alle Zellen leer?"
End if
End Sub

Public Function RangeTesten(ByVal rng As Range) As Boolean
Dim erg As Long

erg = WorksheetFunction.CountA(rng)
If rng.Cells.Count = erg Then RangeTesten = True

End Function


Kommst du damit klar ?!?

_________________
De nihilo nihil fit

Gruß Roland
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 13:23
Rufname: Käpsele

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo Daniel,

schönen dank für deine Antwort.

ich habe selbstverständlich schon in der Hilfe geschaut (Die mich meist mehr verwirrt als hilft) und auch ausführlich gegoogelt, weil ich mich hier ja nicht ständig blamieren möchte...

Ich hatte es auch schon so versucht:
Code:
Private Sub OptionButton_Flaecheinhalt_Ja_Click()

With Tabelle23.Range("AI18,AN13,AD18,AN10,G18,N13,AN35,AN32,N32")

Select Case .Value 'hier liegt wohl der Fehler

Case WorksheetFunction.CountA("AI18,AN13,AD18,AN10") > 0
MsgBox "Variante 1"

Case WorksheetFunction.CountA("G18,N13") > 0
MsgBox "Variante 2"

Case WorksheetFunction.CountA("AN35,AN32") > 0
MsgBox "Variante 3"

Case WorksheetFunction.CountA("N32") > 0
MsgBox "variante 4"

Case Else
MsgBox "Alle Zellen leer?"

End Select
End With
End Sub

was jedoch genausowenig funktioniert.

im Internet habe ich gefunden, dass
Zitat:
Man darf sich immer nur auf eine Variable/Ausdruck beziehen, die man überprüfen will.

Doch das, was ich überprüfen möchte (WorksheetFunction.CountA) steht mir gar nicht zur Verfügung.

Also muss es anders funktionieren...

Hast du mir vielleicht eine Quelle, wo ich es vernünftig erklärt bekomme?

schöne Grüße
Käpsele
Gerd L
Just for fun


Verfasst am:
11. Jun 2011, 13:34
Rufname:
Wohnort: Mannheim


AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo Käpsele,

was möchtest Du zusätzlich auswerten?

Code:
Private Sub OptionButton_Flaecheinhalt_Ja_Click()


Select Case WorksheetFunction.CountA.Tabelle23.Range("AI18,AN13,AD18,AN10")

Case 4
MsgBox "alle gefüllt"

Case 3
MsgBox "drei gefüllt"

Case 2
MsgBox "zwei gefüllt"

Case 1
MsgBox "eins gefüllt"

Case 0
MsgBox "Alle Zellen leer!"

End Select

End Sub

_________________
Gruß Gerd
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 13:37
Rufname: Käpsele

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo,

kleinen Moment bitte, ich stutze gerade meine ursprünglichen Code zusammen, damit ich ihn posten kann...


Schöne Grüße
Käpsele
Bamberg
Excel/Access mit VBA


Verfasst am:
11. Jun 2011, 13:39
Rufname: Gerd

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Servus,

versuch's mal so ...
Private Sub OptionButton_Flaecheinhalt_Ja_Click()

    With Tabelle23
    
        Select Case 0
        
            Case Is < WorksheetFunction.CountA(.Range("AI18,AN13,AD18,AN10"))
            MsgBox "Variante 1"
            
            Case Is < WorksheetFunction.CountA(.Range("G18,N13"))
            MsgBox "Variante 2"
            
            Case Is < WorksheetFunction.CountA(.Range("AN35,AN32"))
            MsgBox "Variante 3"
            
            Case Is < WorksheetFunction.CountA(.Range("N32"))
            MsgBox "variante 4"
            
            Case Else
            MsgBox "Alle Zellen leer?"
        
        End Select
    End With
End Sub

LG Gerd

_________________
NIPSILD = Nicht In Problemen, Sondern In Lösungen Denken
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Jun 2011, 13:42
Rufname:

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hi

also nochmal zur erklärung:

in der Select Case-Anweisung sollten hinter CASE immer ein oder mehrere Werte stehen.
Dieser Case-Wert wird mit dem Wert, der in der esten Zeile bei SELCECT CASE ermittelt wurde verglichen und wenn beide Werte übereinstimmen, wird die Anweisung ausgeführt.


desweitern ist es so, daß bei dir nach CASE ein Vergleich steht (wegen dem >):
WorksheetFunction.CountA("AI18,AN13,AD18,AN10") > 0

vergleiche haben aber immer WAHR oder FALSCH als Ergebnis und das ganze würde so nur funktionieren, wenn in der bei Select Case angegebenen Zelle auch nur WAHR oder FALSCH stehen kann.

du darfst, wenn du eine IF-Konstrukt in ein Select-Case umwandeln willst, nicht einfach die Bedingungen aus den IFs blind kopieren, Select Case funtkioniert da schon ein bisschen anders.

Gruß, Daniel
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 13:51
Rufname: Käpsele

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo,

hier nun mein zusammengestutzter ursprüngliche Code, den ich eigentlich mit einer Select Case Anwendung vereinfachen wollte:
Code:
Private Sub OptionButton_Flaecheinhalt_Ja_Click()

If WorksheetFunction.CountA(Tabelle23.Range("AI18,AN13,AD18,AN10")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des hohlen Rechtecks wirklich löschen?", vbYesNo + vbQuestion, "Eingaben hohles Rechteck") = vbYes Then
            Tabelle23.Range("AI18").ClearContents
            Tabelle23.Range("AN13").ClearContents
            Tabelle23.Range("AD18").ClearContents
            Tabelle23.Range("AN10").ClearContents

            GoTo weiter

            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If
End If

If WorksheetFunction.CountA(Tabelle23.Range("G18,N13")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des einfachen Rechtecks wirklich löschen?", vbYesNo + vbQuestion, "Eingaben einfaches Rechteck") = vbYes Then
            Tabelle23.Range("G18").ClearContents
            Tabelle23.Range("N13").ClearContents
           
            GoTo weiter
           
            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If
End If

If WorksheetFunction.CountA(Tabelle23.Range("AN35,AN32")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des Ringes wirklich löschen?", vbYesNo + vbQuestion, "Eingaben Ring") = vbYes Then
            Tabelle23.Range("AN35").ClearContents
            Tabelle23.Range("AN32").ClearContents
           
            GoTo weiter
           
            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If

End If

If WorksheetFunction.CountA(Tabelle23.Range("N32")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des einfachen Kreises wirklich löschen?", vbYesNo + vbQuestion, "Eingaben einfacher Kreis") = vbYes Then
            Tabelle23.Range("N32").ClearContents
           
            GoTo weiter
           
            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If
End If


weiter:

    Tabelle26.Range("S5").ClearContents ' unwichtig für das Problem
    Tabelle26.Range("T5").Value = Tabelle26.OptionButton_Flaecheinhalt_Ja.Value


End Sub


Wenn ich es so anschaue, dann war dies doch keine so gute Idee, da es immer komplizierter wird? Smile

Was ich außerdem nicht bedacht hatte, sind ja die jeweiligen else Anweisungen.

Vermutlich werde ich es also bei der If Then Überprüfung belassen müssen?


schöne Grüße
Käpsele
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 14:01
Rufname: Käpsele

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo,

Daniel:

Vielen Dank für die super Erklärung! Ich denke, ich habs kappiert Idea

Dann ist meine Vermutung also richtig, ich lasse es so wie es ist.



Gerd:

Ich denke dein letzer Vorschlag wäre der richtige gewesen, wenn es die Else Bedingungen nicht geben würde.

Dankeschön dafür!

(Und wieder hat sich eine Synapse geschlossen Smile)

schöne Grüße
Käpsele
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
11. Jun 2011, 14:35
Rufname: Thomas
Wohnort: Celle

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Ich hätte da auch noch eine Idee...

Code:

Sub OptionButton_Flaecheinhalt_Ja_Click()
    Tabelle26.OptionButton_Flaeche_Nein.value = löscheAngaben("hohlen Rechtecks", "hohles Rechteck", "AI18,AN13,AD18,AN10")
    Tabelle26.OptionButton_Flaeche_Nein.value = löscheAngaben("einfachen Rechtecks", "eeinfaches Rechteck", "G18,N13")
    Tabelle26.OptionButton_Flaeche_Nein.value = löscheAngaben("Ringes", "Ring", "AN35,AN32")
    Tabelle26.OptionButton_Flaeche_Nein.value = löscheAngaben("einfachen Kreises", "einfacher Kreis", "N32")
    Tabelle26.Range("T5").value = Tabelle26.OptionButton_Flaecheinhalt_Ja.value
End Sub

Private Function löscheAngaben(text As String, msgTitelEingaben As String, adressen As String) As Boolean
    Dim c
    Dim check As Long
    Dim r
    r = Split(adressen, ",")
    For Each c In r
        check = check + WorksheetFunction.CountA(Tabelle23.Range(c))
    Next
    löscheAngaben = False
    If check Then
        If MsgBox("Wollen Sie die Angaben des " & text & "wirklich löschen?", _
            vbYesNo + vbQuestion, "Eingaben " & msgTitelEingaben) = vbYes Then
                For Each c In r
                    Tabelle23.Range(c).ClearContents
                Next
                löscheAngaben = True
        End If
    End If
End Function

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 14:48
Rufname: Käpsele

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo Thomas,


vielen Dank für deinen Code.

ich glaube, das muss ich noch viel lernen, bis ich den überhaupt verstehe, wie der funktioniert...

Da ich aber nicht einmal verstehe, wo ich meine anderen Anweisungen platzieren muss, die ich aus Übersichtlichkeitsgründen aus meinem Code entfern habe, wird es für mich schwierig, den Code einzusetzen Sad

Ich danke dir trotzdem vielmals und werde den Code behalten, bis ich diesen verstehen und einsetzen kann.


schöne Grüße
Käpsele
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
11. Jun 2011, 15:08
Rufname: Thomas
Wohnort: Celle

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hier eine kleine Erklärung:

Die Click-Funktion ruft nacheinander für alle geometrischen Objekte die löscheAngaben-Funktion auf, das entspricht deinem Code.

löscheAngaben "zerlegt" dann den gesamten Zell-Adressen-String in einzelne Adressen, um sie verarbeiten zu können:
Code:
r = Split(adressen, ",")


Die ForEach-Schleife prüft dann (ebenfalls wie bei dir), ob für das aktuelle Objekt Werte in den angegebenen Zellen stehen und schreibt die Anzahl in check:
Code:
    For Each c In r
        check = check + WorksheetFunction.CountA(Tabelle23.Range(c))
    Next


Enthalten die Zellen keine Werte (check=0; entspricht in VBA false), wird der If-Zweig nicht mehr ausgeführt und false zurückgegeben
Code:
löscheAngaben = False
und in Tabelle26.OptionButton_Flaeche_Nein.value geschrieben, ebenfalls wie bei dir. Tabelle26.OptionButton_Flaeche_Nein.value wird ja der Rückgabewert aus löscheAngaben zugewiesen, und der ist nun false.
Aufruf lautete z.B.:
Code:
Tabelle26.OptionButton_Flaeche_Nein.value = löscheAngaben("hohlen Rechtecks", "hohles Rechteck", "AI18,AN13,AD18,AN10")


Sind aber Werte vorhanden (check <> 0; entspricht in VBA true), dann wird der If-Zweig ausgeführt und gefragt, ob sie gelöscht werden sollen (auch wie bei dir) und wenn ja, dann werden die zugehörigen Zellen in der ForEach-Schleife gelöscht.
Code:
                For Each c In r
                    Tabelle23.Range(c).ClearContents
                Next
Und nur dann wird auch true zurückgegeben
Code:
löscheAngaben = True
und in Tabelle26.OptionButton_Flaeche_Nein.value geschrieben.

So habe ich deinen Code jedenfalls verstanden Smile

Was musst du denn wann wo noch einfügen?

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!
Käpsele
Einsteiger


Verfasst am:
11. Jun 2011, 15:43
Rufname: Käpsele

AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo Thomas,

Dankeschön für die schöne Erklärung.

Die hat mir auf jeden Fall weiter geholfen, die Materie besser zu verstehen.

Klingt ein wenig kompliziert mit dem zerlegen und zusammenfügen. Für einen VBA-NonExpert ein beachtliche Leistung! Smile
Das strengt die grauen Zellen ganz schön an, um auf so etwas überhaupt zu kommen!?!
Wo lernt man so etwas?

Also, du hast es so gewollt... Very Happy

hier nun der komplette Code dieses Makros:
Code:
Private Sub OptionButton_Flaecheinhalt_Ja_Click()
' Prüft Variante 1 bis 4 ob noch Werte eingetragen sind
'AI18 'Rechteck innen kurze Seite
'AN13 'Rechteck innen lange Seite
'AD18 'Rechteck außen kurze Seite
'AN10 'Rechteck außen lange Seite
'G18 'Rechteck kurze Seite
'N13 'Rechteck lange Seite
'AN35 'Kreis Innendurchmesser
'AN32 'Kreis Außendurchmesser
'N32 'Kreis Durchmesser

If WorksheetFunction.CountA(Tabelle23.Range("AI18,AN13,AD18,AN10")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des hohlen Rechtecks wirklich löschen?", vbYesNo + vbQuestion, "Eingaben hohles Rechteck") = vbYes Then
            Tabelle23.Range("AI18").ClearContents
            Tabelle23.Range("AN13").ClearContents
            Tabelle23.Range("AD18").ClearContents
            Tabelle23.Range("AN10").ClearContents
            Tabelle26.txt_Inputbox_Rechteck_innen_kurz.Value = Tabelle23.Range("AI18").Value
            Tabelle26.txt_Inputbox_Rechteck_innen_lang.Value = Tabelle23.Range("AN13").Value
            Tabelle26.txt_Input_Rechteck_aussen_kurz.Value = Tabelle23.Range("AD18").Value
            Tabelle26.txt_Input_Rechteck_aussen_lang.Value = Tabelle23.Range("AN10").Value
            Tabelle26.txt_box_Flaecheninhalt.Value = ""
            Call txtInputboxZuhaltekraftInhaltLöschen
            GoTo weiter

            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If
End If

If WorksheetFunction.CountA(Tabelle23.Range("G18,N13")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des einfachen Rechtecks wirklich löschen?", vbYesNo + vbQuestion, "Eingaben einfaches Rechteck") = vbYes Then
            Tabelle23.Range("G18").ClearContents
            Tabelle23.Range("N13").ClearContents
            Tabelle26.txt_Inputbox_Rechteck_kurz.Value = Tabelle23.Range("G18").Value
            Tabelle26.txt_Inputbox_Rechteck_lang.Value = Tabelle23.Range("N13").Value
            Tabelle26.txt_box_Flaecheninhalt.Value = ""
            Call txtInputboxZuhaltekraftInhaltLöschen
            GoTo weiter
           
            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If
End If

If WorksheetFunction.CountA(Tabelle23.Range("AN35,AN32")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des Ringes wirklich löschen?", vbYesNo + vbQuestion, "Eingaben Ring") = vbYes Then
            Tabelle23.Range("AN35").ClearContents
            Tabelle23.Range("AN32").ClearContents
           
            Tabelle26.txt_Inputbox_kreis_innen.Value = Tabelle23.Range("AN35").Value
            Tabelle26.txt_Inputbox_kreis_aussen.Value = Tabelle23.Range("AN32").Value
            Tabelle26.txt_box_Flaecheninhalt.Value = ""
            Call txtInputboxZuhaltekraftInhaltLöschen
            GoTo weiter
           
            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If

End If

If WorksheetFunction.CountA(Tabelle23.Range("N32")) > 0 Then

            If MsgBox("Wollen Sie die Angaben des einfachen Kreises wirklich löschen?", vbYesNo + vbQuestion, "Eingaben einfacher Kreis") = vbYes Then
            Tabelle23.Range("N32").ClearContents
            Tabelle26.txt_Inputbox_kreisdurchmesser.Value = Tabelle23.Range("N32").Value
            Tabelle26.txt_box_Flaecheninhalt.Value = ""
            Call txtInputboxZuhaltekraftInhaltLöschen
            GoTo weiter
           
            Else
            Tabelle26.OptionButton_Flaeche_Nein.Value = True
            Exit Sub
            End If
End If


weiter:

    Tabelle26.Range("S5").ClearContents '  Angaben in der Hilfstabelle
    Tabelle26.Range("T5").Value = Tabelle26.OptionButton_Flaecheinhalt_Ja.Value ' Angaben in der Hilfstabelle
    Tabelle26.Shapes("Group 23").Visible = True
        Tabelle26.Shapes("Group 25").Visible = False

            Tabelle26.Shapes("Group 67").Visible = False
            Tabelle26.Shapes("Group 79").Visible = False
            Tabelle26.Shapes("Group 103").Visible = False
            Tabelle26.Shapes("Group 111").Visible = False

            Tabelle26.txt_Inputbox_Flaecheninhalt.Value = Tabelle23.Range("BF22").Value

End Sub

Ich hoffe, er verwirrt dich nicht zu sehr?


schöne Grüße
Käpsele
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
11. Jun 2011, 16:58
Rufname: Thomas
Wohnort: Celle


AW: Bekomme Select Case Anweisung nicht hin - AW: Bekomme Select Case Anweisung nicht hin

Nach oben
       Version: Office 2010

Hallo Käpsele,

ich hab den Code mal entsprechend angepasst - kann es aber leider nicht testen. Sollte aber funktionieren Smile Naja, sonst meldest du dich...

Eins vorweg: Wenn ich es richtig sehe, dann werden jetzt auch die Textboxen gelöscht, da ja der Zellinhalt aus Tabelle 23 in die jeweilige Textbox der Tabelle 26 übernommen wird und die Zellinhalte werden ja vorher immer gelöscht.
Das lässt sich doch viel einfacher (und ohne Quelltext!) realisieren, wenn du jeder Textbox in den Eigenschaften unter LinkedCell die zugehörige Zelle mitteilst. Dann hat die Zelle immer den gleichen Inhalt der Textbox und die Textbox wird automatisch gelöscht, wenn die Zelle gelöscht wird...
Beispiel:
Eigenschaft LinkedCell der
Zitat:
txt_Inputbox_Rechteck_innen_kurz.Value
Code:
Tabelle23!AI18

So kannst du dir dann das zusätzliche Löschen der Textboxen nach dem Löschen der Zellen sparen...
Und der restliche Code sieht dann so aus:
Code:
Sub OptionButton_Flaecheinhalt_Ja_Click()
   
    '*** 1. GeoObjekt prüfen, ob Werte in den Zellen stehen
    If löscheAngaben("hohlen Rechtecks", "hohles Rechteck", "AI18,AN13,AD18,AN10") Then ' nichts weiter; fertig
   
    '*** wenn für das vorherige keine Werte in den Zellen standen, dann das nächste
    ElseIf löscheAngaben("einfachen Rechtecks", "einfaches Rechteck", "G18,N13") Then ' nichts weiter; fertig
   
    '*** dito
    ElseIf löscheAngaben("Ringes", "Ring", "AN35,AN32") Then ' nichts weiter; fertig
   
    '*** und das letzte
    Else: Call löscheAngaben("einfachen Kreises", "einfacher Kreis", "N32")
   
End Sub

Private Function löscheAngaben(text As String, msgTitelEingaben As String, adressen As String) As Boolean
   
    '*** Adressenstring in einzelne Adresse teilen
    Dim r
    r = Split(adressen, ",")
   
    '*** alle Adressen durchgehen und prüfen, ob Werte in den Zellen stehen
    Dim c
    Dim check As Long
    For Each c In r
        check = check + WorksheetFunction.CountA(Tabelle23.Range(c))
    Next
   
    '*** Default-Rückgabe: keine Werte vorhanden, nächstes Objekt kann geprüft werden
    löscheAngaben = False
   
    '*** waren Werte vorhanden?
    If check Then
       
        '*** nach Beendigung fertig, keine weiteren Objekte/Zellen mehr prüfen
        löscheAngaben = True
       
        '*** Löschen?
        If MsgBox("Wollen Sie die Angaben des " & text & " wirklich löschen?", _
            vbYesNo + vbQuestion, "Eingaben " & msgTitelEingaben) = vbYes Then
           
            '*** Löschen!
            For Each c In r
                '*** Zelle wird gelöscht, verbundene Textbox (LinkedCell-Eigenschaft!) wird ebenfalls gelöscht
                Tabelle23.Range(c).ClearContents
            Next
           
            '*** Abschlussarbeiten nach dem Löschen...
            Tabelle26.txt_box_Flaecheninhalt.value = ""
            txtInputboxZuhaltekraftInhaltLöschen
            Tabelle26.Range("S5").ClearContents '  Angaben in der Hilfstabelle
            Tabelle26.Range("T5").value = Tabelle26.OptionButton_Flaecheinhalt_Ja.value
            Tabelle26.Shapes("Group 23").Visible = True
            Tabelle26.Shapes("Group 25").Visible = False
            Tabelle26.Shapes("Group 67").Visible = False
            Tabelle26.Shapes("Group 79").Visible = False
            Tabelle26.Shapes("Group 103").Visible = False
            Tabelle26.Shapes("Group 111").Visible = False
            Tabelle26.txt_Inputbox_Flaecheninhalt.value = Tabelle23.Range("BF22").value
       
        '*** NICHT Löschen!
        Else
            Tabelle26.OptionButton_Flaeche_Nein.value = True
        End If
    End If
End Function

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Anweisung zu:Auswertung aus Zeile in Spalte mit Bedingung 9 Goalie24 190 05. Jul 2011, 11:12
Goalie24 Anweisung zu:Auswertung aus Zeile in Spalte mit Bedingung
Keine neuen Beiträge Excel Formeln: Wenn Anweisung mit Hintergrundfarbe 2 Stutzpeter 591 18. Apr 2011, 19:18
Gast Wenn Anweisung mit Hintergrundfarbe
Keine neuen Beiträge Excel Formeln: Excel schreibt den Bezug hin, aber nicht den Inhalt 3 schokoline 590 21. Okt 2010, 13:49
schokoline Excel schreibt den Bezug hin, aber nicht den Inhalt
Keine neuen Beiträge Excel Formeln: wenn... dann... ich kriegs nicht hin 3 shiny-diamond 195 11. Jun 2010, 10:21
shiny-diamond wenn... dann...    ich kriegs nicht hin
Keine neuen Beiträge Excel Formeln: Wie bekomme ich alle Werte einer Zeile in ein anderes Arbeit 2 mannikr 301 01. Jun 2010, 12:57
mannikr Wie bekomme ich alle Werte einer Zeile in ein anderes Arbeit
Keine neuen Beiträge Excel Formeln: Formel für SVerweis bekomme ich nicht hin 5 Gast 197 26. Jan 2010, 20:31
Gast Formel für SVerweis bekomme ich nicht hin
Keine neuen Beiträge Excel Formeln: EXCEL sverweis case sensitive 2 JanL 5381 23. Sep 2009, 13:54
JanL EXCEL sverweis case sensitive
Keine neuen Beiträge Excel Formeln: dau Frage / Summe wenn dann ? Bekomme ich nicht hin 3 Gast lein 285 19. Sep 2009, 00:19
Gast dau Frage / Summe wenn dann ? Bekomme ich nicht hin
Keine neuen Beiträge Excel Formeln: Bekomme meine Summe nicht raus 2 Gast 383 09. Jan 2009, 10:02
Gast Bekomme meine Summe nicht raus
Keine neuen Beiträge Excel Formeln: ODER Funktion: Ich bekomme es nicht hin 4 starfighter 505 26. Mai 2008, 12:09
HermannZ ODER Funktion: Ich bekomme es nicht hin
Keine neuen Beiträge Excel Formeln: Sverweis bekomm ich nicht hin 2 Lasummi 392 23. Apr 2008, 22:11
Lasummi Sverweis bekomm ich nicht hin
Keine neuen Beiträge Excel Formeln: einfache wenn-Formel krieg ich nicht hin 2 Jobi81 404 05. Apr 2008, 18:19
Gast einfache wenn-Formel krieg ich nicht hin
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA