Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zellenauswahl für Target mit Select Case





Frage

Tach zusammen, hier [url]https://supportnet.de/threads/994746[/url] habe ich mich an einer Alternative versucht, die nicht funzt. Ich möchte ähnlich wie mit If Target.Column = 2 einen Bereich z.B. wie "B5:B20" abarbeiten mit einer Select Case Anweisung. Wer von den VBA-Spezis kann mir auf die Sprünge helfen? Ich mach´ jetzt erstmal 4 Tage PC-Pause, kann mich also frühestens Mittwoch melden. Vielleicht gibt´s bis dahin ja einen Wink mit ´nem Zaunpfahl. Danke MfG schnallgonz [sub] Ein Erfahrener ist besser als 10 Gelehrte. Signatur und Textformatierungen wurden mit [url=http://querschlaegerzone.hits4.net/sntool/]SNTool V1.1.12[/url] erstellt[/sub]

Antwort 1 von piano

Hallo
Schau auf die Anwort 14, dort gibst du Range("B5:B20") ein!
Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von schnallgonz

Hi Piano,

Danke, aber Antwort 14 ist von mir und sie funzt nicht, weil sie sich auf Target allgemein bezieht, also auffe janze Tabelle!
Zwar Range eine Variablen zugewiesen, diese aber nicht als Target angesprochen.

Ich weiß nicht, wie man Target einen individuellen Bereich zuweist.
Target.Column = n funzt,
aber wie krieg ich´s auf einen Bereich.

Target.Address = Range(irgendwas).Address
klappt nicht mit der SelectCase-Geschichte.

Andere Idee?

MfG
schnallgonz

Ein Erfahrener ist besser als 10 Gelehrte.
Signatur und Textformatierungen wurden mit SNTool V1.1.12 erstellt


Antwort 3 von piano

Hallo
Ja, da habe ich zu schnell geschossen, aber:
target.column bringt die Spalte, target.row bringt die Zeile.
Daher (Bereich "B5:C20"):
If Target.Column >= 2 And Target.Column <= 3 _
And Target.Row >= 5 And Target.Column <= 20 Then select case target
case 1
.....


da Target allein eigentlich Target.Value bedeutet!

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Primut

Hi Schnallgonz,

vielen Dank erstmal, daß du meinen Namen in den Makros
verewigt hast.
Ansonsten war dein Ansatz richtig, du mußt den Bereich bloß mit Intersect auch abfragen:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Zellbereich As Range
Set Zellbereich = Range("A1:A100")
If Intersect(Target, Zellbereich) Is Nothing Then
  Exit Sub
Else
Select Case Target
Case 1
 Primut = "Eins"
Case 2
 Primut = "Zwei"
Case 3
 Primut = "Drei"
Case 4
 Primut = "Vier"
Case 5
 Primut = "fünf"
Case 6
 Primut = "Sechs"
Case Else
 Primut = ""
End Select
Application.EnableEvents = False
Target.Value = Primut
Application.EnableEvents = True
End If
End Sub


Funzt jedenfalls bei mir, das einzigste Problem ergibt sich,
wenn du mehrere Zellen im ausgewählten Bereich änderst! (zB kompletten Bereich löschen) Dafür hab ich noch keine Lösung gefunden.

Beste Grüße

Primut

Antwort 5 von Primut

Hi Schnallgonz,

jetzt nochmal mit Fehlerbehandlung, d.h. wenn mehr
als eine Zelle geändert wird, passiert erstmal gar nichts, d.h. wird es ignoriert.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zellbereich As Range
Set Zellbereich = Range("A1:A100")
On Error GoTo Schnallgonz
If Intersect(Target, Zellbereich) Is Nothing Then
Exit Sub
Else
Select Case Target
Case 1
Primut = "Eins"
Case 2
Primut = "Zwei"
Case 3
Primut = "Drei"
Case 4
Primut = "Vier"
Case 5
Primut = "Fünf"
Case 6
Primut = "Sechs"
Case Else
Primut = ""
End Select
Application.EnableEvents = False
Target.Value = Primut
Application.EnableEvents = True
End If
Exit Sub

Schnallgonz:
End Sub


Antwort 6 von schnallgonz

Salvete Piano und Primut,

vielen Dank für Eure Antworten, wieder etwas dazugelernt.

@Primut
Zitat:
vielen Dank erstmal, daß du meinen Namen in den Makros
verewigt hast.

Ist ja Dein Makro; ich habe diese Variante zum besseren Verständnis für Malewski gewählt, dem die Namensänderung nicht klar war.

MfG
schnallgonz

Ein Erfahrener ist besser als 10 Gelehrte.
Signatur und Textformatierungen wurden mit SNTool V1.1.12 erstellt


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: