Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
740to744
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
740to744
740to744
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Case Else funktioniert nicht richtig

Case Else funktioniert nicht richtig
10.03.2006 10:55:33
Andreas
Hallo zusammen,
habe einen kleinen Code der Spalte B nach Werten überprüft und bei übereinstimmung einen anderen Wert in Spalte C einträgt.
Wenn keine übereinstimmung gefunden wird soll die nachbarzelle in Spalte C leer bleiben.
Das wollte ich mit Case Else lösen, aber dabei läuft das ganze sehr lange.
Suche eine bessere Lösung.
Gruß Andreas

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Werte in Spalte B vergleichen und Kriterium in Spalte C eintragen
Dim SuchBereich As Range
Dim myC As Range
Set SuchBereich = Range("B3:B7000")
For Each myC In SuchBereich
Select Case myC
Case 1
myC.Offset(0, 1) = Range("j3")
Case 2
myC.Offset(0, 1) = Range("j4")
Case 3
myC.Offset(0, 1) = Range("j5")
Case 4
myC.Offset(0, 1) = Range("j6")
Case Else   'wenn Wert in Spalte B ungleich 1,2,3,oder4 dann leere Zelle in Spalte C
myC.Offset(0, 1) = ""
End Select
Next
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Case Else funktioniert nicht richtig
10.03.2006 11:02:18
Hoffi
Hallo Andreas,
hatte Dir gestern schonmal mein Beispiel gepostet.
Hier nochmal, diesmal sucht er in Spalte B und gibt den Wert an C zurück.
https://www.herber.de/bbs/user/31780.xls
Grüße
Hoffi
P.S. Rückmeldung wäre nett...
AW: Case Else funktioniert nicht richtig
10.03.2006 11:14:43
Andreas
Hallo Hoffi,
vielen Dank nochmals für deine Meldung, ich suche aber die Lösung nicht über eine EingabeBox sondern wie aus dem Beispiel ersichtlich über die Selection Change Methode.
Das funktioniert auch gut, nur eben bei Case Else ist irgenwie der Hund begraben.
Gruß Andreas
AW: Case Else funktioniert nicht richtig
10.03.2006 11:29:53
Heiko
Hallo Andreas,
das hat nichts mit Case Else zu tun, sondern damit das du bei jedem SelectionChange, also jedem neuen anklicken einer Zelle, das Makro ausführst.
Darin wird dann für 7000 Zellen ein Prüfung durchgeführt, das dauert halt seine Zeit. Vor allem wenn oft was anderes als 1 - 4 drin steht, dann muss halt viel in die Tabelle eingetragen werden.
Mit Application.ScreenUpdating = False geht das zwar ein bisschen schneller, aber du solltest den ganzen Ansatz nochmal überdenken.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Werte in Spalte B vergleichen und Kriterium in Spalte C eintragen
Dim SuchBereich As Range
Dim myC As Range
Set SuchBereich = Range("B3:B7000")
Application.ScreenUpdating = False
For Each myC In SuchBereich
Select Case myC
Case 1
myC.Offset(0, 1) = Range("j3")
Case 2
myC.Offset(0, 1) = Range("j4")
Case 3
myC.Offset(0, 1) = Range("j5")
Case 4
myC.Offset(0, 1) = Range("j6")
Case Else   'wenn Wert in Spalte B ungleich 1,2,3,oder4 dann leere Zelle in Spalte C
myC.Offset(0, 1) = ""
End Select
Next
Application.ScreenUpdating = True
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Case Else funktioniert nicht richtig - Frage
10.03.2006 11:46:22
Franz
Hallo Andreas,
um den Code zu Optimieren, müsste man wissen:
Wann/Wo ändern sich die Werte in Spalte B, so dass die Werte in Spalte C neu berechnet werden müssen.
Dann ist es evtl. besser mit

Private Sub Worksheet_Change(ByVal Target As Range)
'Werte in Spalte B vergleichen und Kriterium in Spalte C eintragen
'Code
End Sub

Indem man die Target-Adresse mit If-Bedingungen überprüft kann man dann ggf. die Berechnungszeiten stark verkürzen.
Gruß
Franz
AW: Case Else funktioniert nicht richtig
10.03.2006 12:02:25
Franz
Hallo Andreas,
folgende Umstellung läuft schon wesentlich schneller

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Werte in Spalte B vergleichen und Kriterium in Spalte C eintragen
Dim SuchBereich As Range, Zielbereich As Range
Dim myC As Range
Set SuchBereich = Range("B3:B7000")
Set Zielbereich = SuchBereich.Offset(0, 1)
Zielbereich.Value = ""
For Each myC In SuchBereich
Select Case myC
Case 1
myC.Offset(0, 1) = Range("j3")
Case 2
myC.Offset(0, 1) = Range("j4")
Case 3
myC.Offset(0, 1) = Range("j5")
Case 4
myC.Offset(0, 1) = Range("j6")
End Select
Next
End Sub

Gruß
Franz
Anzeige
Danke Franz
10.03.2006 12:43:01
Andreas
Hallo Franz,
das funktioniert wunderbar.
Vielen Dank Andreas

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige