Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Select Case Problem - mal wieder...

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

10.10.2011, aktualisiert 21:16 Uhr, 3587 Aufrufe, 9 Kommentare

Hallo,
ich möchte einfach nur abfragen, ob eine Zelle im String einen bestimmten numerischen Wert enthält (z.B.: 0,1 oder 0,01 oder 0,25 usw.)

Ich hatte kurz darüber nachgedacht, ob man die numerischen Werte als Zahl in eine Variable stecken kann um damit weiterzuarbeiten.
Hab ich dann aber verworfe.

Nun versuche ich z.B. den String "0,1" in der jeweiligen Zelle zu finden (in einer Schleife), um dann bei einem Auftreten weitere Schritte anzustossen.

Leider klappt es nicht so wie ich will.

Ausschnitt:

01.
 Select Case Cells.Find("0,1", "0,01", "0,001,",  "0,0001", Cell.Row, Cell.Colum, Cell.Row, Cell.Column) 
02.
                        Case True 
03.
                            MsgBox "0,1" 
04.
                        Case True 
05.
                            MsgBox "0,01" 
06.
                        Case True 
07.
                            MsgBox "0,001" 
08.
End Select 
09.
 
Hat einer von euch da einen Tipp?

Torsten
Mitglied: dog
10.10.2011 um 21:35 Uhr
Ein Select soll unterschiedliche Fälle unterscheiden.
Sind True, True und True unterschiedliche Fälle?
Bitte warten ..
Mitglied: Biber
10.10.2011 um 21:42 Uhr
Zitat von dog:
Ein Select soll unterschiedliche Fälle unterscheiden.
Sind True, True und True unterschiedliche Fälle?
Wenn denn wenigstens ein "Case Else" am Ende stünde, dann wäre es egal.
Bitte warten ..
Mitglied: bastla
10.10.2011 um 23:41 Uhr
Hallo TorstenB!

Was genau soll das werden? Wenn Du wissen willst, ob irgendwo in der Tabelle (zumindest lässt Dein Codeansatz den Schluss zu, dass es nicht um eine bestimmte zu untersuchende Zelle geht) einer der angegebenen Werte (weshalb eigentlich als String - gefunden werden so nämlich keine Zahlenwerte?) in einer Zelle steht, könntest Du eine Schleife der Art
01.
For Each Suchwert In Array("0,1", "0,01", "0,001") 
02.
    Set Found = Cells.Find(Suchwert, , xlValues, xlPart) 
03.
    If Not Found Is Nothing Then 
04.
        MsgBox Suchwert & " gefunden in " & Found.Address 
05.
        Exit For 
06.
    End If 
07.
Next
verwenden. Sollte es doch darum gehen, zu prüfen, ob die entsprechende Zahl in einer Zelle steht, dann:
01.
For Each Suchwert In Array(0.1, 0.01, 0.001) 
02.
    Set Found = Cells.Find(Suchwert, , xlValues) 
03.
    If Not Found Is Nothing Then 
04.
        MsgBox Suchwert & " gefunden in " & Found.Address 
05.
        Exit For 
06.
    End If 
07.
Next
Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
11.10.2011 um 07:09 Uhr
Guten Morgen,
in den entsprechenden Zellen steht jeweils ein String, in dem eine der drei Varianten enthalten ist. Es reicht mir daher zu erkennen, welcher Wert als String mit drinsteht. Es sind immer genau definierte Werte,

Nach dem Identifizieren soll (ich will immer nur genau eine Zelle auf das Vorkommen darin untersuchen, da aussen herum eine Schlefe ist, die Zeile für Zeile durchgeht) soll möchte ich je nach dem Fund eine bestimmte Aktion ausführen. Ich will also nicht mit dem gefundenen Wert als Zahl im String weiterarbeiten, sondern nur True oder False auswerten.

Allerdings könnten nach und nach noch andere Werte hinzukommen, welbalb ich eine Case-Anweisung nutzen möchte, da man das hier sehr schnell nachtragen kann.

Mein Ansatz war natürlich so Quatsch, da immer True herauskommen würde und damit das erste Case ausgelöst würde.
Ich weiß nur nicht, wie ich diese erste Zeile "Select Case..." mit der Find-Funktion unter einen Hut bekomme.

Gruß
Torsten
Bitte warten ..
Mitglied: bastla
11.10.2011 um 07:30 Uhr
Hallo TorstenB!

Wenn Du nur jeweils eine Zelle untersuchen willst, verwende "InStr()".

Da es um Teilstrings der Zelle gehen soll, wirst Du nicht an einer Schleife über alle Suchbegriffe (wie etwa in meiner Zeile 1) vorbeikommen (wobei ich aus Gründen der Übersichtlichkeit das "Array()" bereits vorher einer Variablen zuweisen würde) ...

Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
11.10.2011 um 09:27 Uhr
Hallo bastla,
ich wollte es dennoch mit der Cells.find Methode machen; das Abbprüfen des Inhalts einfach in eine Funktion vergeben.
Leider komme ich aber mit dem Definieren der Funktion nicht ganz klar. Vielleicht kannst du mir da helfen? Hier mein Ansatz:

01.
Public Funktion Umrechnung(temp) 
02.
For Each Suchwert In Array("0,1", "0,01", "0,001", "0,0001", "0,25") 
03.
    Set Found = Cells.Find(Suchwert, , xlValues, xlPart) 
04.
 
05.
    If Suchwert = "0,1" Then Faktor = "10" 
06.
    End If 
07.
    If Suchwert = "0,01" Then Faktor = "100" 
08.
    End If 
09.
    If Suchwert = "0,001" Then Faktor = "1000" 
10.
    End If 
11.
    If Suchwert = "0,0001" Then Faktor = "10000" 
12.
    End If 
13.
    If Suchwert = "0,25" Then Faktor = "4" 
14.
    End If 
15.
    If Not Found Is Nothing Then Faktor = "1" 
16.
    End If 
17.
     
18.
Next 
19.
Set Umrechnen = Faktor 
20.
End Function
Ich habe hier If verwendet, oder wäre es doch mit Case Select besser?
Im Prinzip möchte ich die Funktion aufrufen und dabei die Zieladresse, wo sie suchen soll übergeben.

Den Rückgabewert "Faktor" will ich dann in meinen Berechnungen verwenden

Gruß
Torsten
Bitte warten ..
Mitglied: goodbytes
11.10.2011 um 11:15 Uhr
So, habs nun doch mit Instr() gemacht.
Der Teil sieht jetzt so aus:

01.
                                    If Not InStr(Cell.Offset(0, -8).Value, "0,1") = 0 Then 
02.
                                    Faktor = 10 
03.
                                    End If 
04.
                                    If Not InStr(Cell.Offset(0, -8).Value, "0,01") = 0 Then 
05.
                                    Faktor = 100 
06.
                                    End If 
07.
                                    If Not InStr(Cell.Offset(0, -8).Value, "0,001") = 0 Then 
08.
                                    Faktor = 1000 
09.
                                    End If 
10.
                                    If Not InStr(Cell.Offset(0, -8), "0,0001") = 0 Then 
11.
                                    Faktor = 10000 
12.
                                    End If 
13.
                                    If Not InStr(Cell.Offset(0, -8).Value, "0,25") = 0 Then 
14.
                                    Faktor = 4 
15.
                                    End If 
16.
                                    If Faktor = 0 Then 
17.
                                    Faktor = 1 
18.
                                    End If
Es hätte mich aber mal interessiert wie es mit der Funktion klappen würde...

Danke für eure Mühe !!!

Torsten
Bitte warten ..
Mitglied: steini84
11.10.2011 um 11:24 Uhr
Hi,

mit Funktion wäre es etwas einfacher:

01.
Public Function Umrechnung(Zelle As Range) As Integer 
02.
 
03.
    Select Case Zelle.Value 
04.
        Case "0,1" 
05.
            Umrechnung = "10" 
06.
        Case "0,01" 
07.
            Umrechnung = "100" 
08.
        Case "0,001" 
09.
            Umrechnung = "1000" 
10.
        Case "0,0001" 
11.
            Umrechnung = "10000" 
12.
        Case "0,25" 
13.
            Umrechnung = "4" 
14.
        Case Else 
15.
            Umrechnung = "1" 
16.
    End Select 
17.
 
18.
End Function
Damit kannst du zum Beispiel die Berechnung "on-the-fly" machen:

Gewinn = Umrechnung("A2") + Zinsen * 100

Wenn du die Funktion in ein Modul packst, kannst du sie von Überall mit dem Parameter der zu bestimmenden Zelle aufrufen (auch in der Zelle direkt mit =Umrechnung(Zelle))..

MfG Steini
Bitte warten ..
Mitglied: goodbytes
13.10.2011 um 14:16 Uhr
Hallo Steini,
ja stimmt, som werde ich es auch machen.

Ein dickes Dankeschön !!!

Gruß
Torsten
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Select Case wird nicht richtig ausgewertet

gelöst Frage von AximandVB for Applications11 Kommentare

Hallo zusammen, mich plagt etwas. Folgender Code Bis zum Fall "35" AND "18" wird die Textbox auch mit dem ...

Microsoft Office

Mal wieder ein Excel-Problem

gelöst Frage von YannoschMicrosoft Office4 Kommentare

Guten Morgen zusammen, Auszug einer Spalte in einer riesigen Excel-Tabelle: Ich muss nun in eine Spalte links davon alle ...

LAN, WAN, Wireless

Problem Captive Portal auf pfSense - mal wieder . .

gelöst Frage von frank099LAN, WAN, Wireless7 Kommentare

Ein freundliches Hallo an dieses sehr gute Forum! Ich hatte bis vor kurzem eine pfSense auf einem etwas betagten ...

Batch & Shell

Cursor Focus mal da - mal nicht

Frage von PeterzBatch & Shell7 Kommentare

Hallo, ich habe ein Powershell Script, welches mir AD-Benutzer anlegt. Die Eingabe von Benutzernamen erfolgt durch eine TextBox, wobei ...

Neue Wissensbeiträge
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 4 StundenWindows Server

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 10 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 12 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...