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.
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
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"):
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.
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:
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
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.
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
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
vielen Dank für Eure Antworten, wieder etwas dazugelernt.
@Primut
Zitat:
vielen Dank erstmal, daß du meinen Namen in den Makros
verewigt hast.
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