Registriert seit: 19.03.2015
Version(en): 2010
Hallo zusammen,
ich habe ein wahrscheinlich einfaches Problem, aber ich komme nicht drauf wie es gelöst werden kann.
Ich schreibe per select case verschiedene Werte in die Tabelle.
Code:
Select Case Range("N58").Text
Case "Audi"
Range("P58") = 58
Case "BMW"
Range("P58") = 59
Case "Daimler"
Range("P58") = 60
'usw
End Select
Der Wert wird aber erst in die Zelle geschrieben, wenn ich irgend eine andere Zelle anwähle.
Was mache ich falsch?
Ich möchte, dass der Wert sofort übernommen wird, um weiter berechnet werden zu können.
Danke und Gruß
Andreas
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
01.04.2015, 07:23
(Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2015, 07:24 von RPP63.)
Guten Morgen!
Hast Du auch das richtige Event gewählt?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$N$58" Then Exit Sub
Select Case Target.Text
Case "Audi"
Range("P58") = 58
Case "BMW"
Range("P58") = 59
Case "Daimler"
Range("P58") = 60
'usw
End Select
End Sub
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 19.03.2015
Version(en): 2010
Hallo,
ich habe selection change gewählt.
Nur mit change funktionierts nicht.
Hier der ganze Code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Range
Dim Bereich As Range
Set Bereich = ThisWorkbook.Sheets("Deckblatt").Range("F18,F20,G24,F38,F41,G26,G31,H44")
For Each a In Bereich
If a = Empty Then a = "Bitte eintragen"
Next
Set Bereich = Nothing
'----Anzeige des Logos----
Select Case Range("N58").Text
Case "Audi"
Range("P58") = 58
Case "BMW"
Range("P58") = 59
Case "Daimler"
Range("P58") = 60
Case Else
Range("P58") = 1
End Select
End Sub
Gruß
Andreas
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
Schau Dir die aller erste Zeile Deines Codes noch einmal an und vergleiche diese mit Ralfs erster Codezeile.
Gruß Atilla
Registriert seit: 19.03.2015
Version(en): 2010
(01.04.2015, 11:07)atilla schrieb: Hallo,
Schau Dir die aller erste Zeile Deines Codes noch einmal an und vergleiche diese mit Ralfs erster Codezeile.
Mit "
Private Sub Worksheet_Change(ByVal Target As Range)" funktioniert es nicht.Da passiert gar nichts.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hallo!
Bei meinem Makro wird ein Ereignis ausgelöst, wenn sich der Wert in Zelle N58 ändert.
Makro gehört ins Klassenmodul der Tabelle.
Ich persönlich würde dies auch nicht fest im Code "verdrahten", sondern einen SVerweis in einer ausgeblendeten Tabelle durchführen.
Wenn es bei Dir nicht klappt, empfehle ich den Upload Deiner (anonymisierten?) Mappe.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 19.03.2015
Version(en): 2010
01.04.2015, 12:00
(Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2015, 12:01 von aef100.)
Danke für die Hilfe,
ich glaube nicht, dass es so kompliziert ist.
Der Wert wird ja übernommen, aber erst nach "Enter" oder markieren einer Zelle.
Sonst funktioniert alles einwandfrei.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hi!
Ja, das Verhalten ist normal.
Im Editiermodus einer Zelle wird kein Ereignis im VBA-Sinn ausgelöst.
Wenn Du aber einen Zellendropdown (Daten, Datengültigkeit, Liste) in Deine Zellen einpflegst, erübrigt sich Dein Problem.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 19.03.2015
Version(en): 2010
Ich wollte eigentlich die ewig lange "Wenn-Formel" mit dem Code umgehen.
Mit der Formel werden Änderungen sofort übernommen.
In dem jetzigen Fall werden die Hersteller ja per Zellendropdown eingegeben und anhand des Inhalts ein Wert geschrieben, um das jeweilige Logo einzublenden, aber das passiert erst wenn Enter gedrückt wird.
Gibt es für VBA nicht einen einfachen Befehl, der dies macht?
Gruß
Andreas
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hi!
1. Eine lange WENN-Formel kann man mit einer Hilfstabelle und bspw. dem SVERWEIS() elegant lösen.
2. Bei mir löst eine Änderung eines Zellendropdowns durchaus ein Change-Event aus.
Nochmal der Tipp von oben: Beispieldatei!
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)