Werte werden erst beim anwählen einer Zelle übernommen
#1
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
Top
#2
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)
Top
#3
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
Top
#4
Hallo,

Schau Dir die aller erste Zeile Deines Codes noch einmal an und vergleiche diese mit Ralfs erster Codezeile.
Gruß Atilla
Top
#5
(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.
Top
#6
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)
Top
#7
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.
Top
#8
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)
Top
#9
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
Top
#10
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)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste