Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antwortento 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)
Antwortento 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
Antwortento top
#4
Hallo,

Schau Dir die aller erste Zeile Deines Codes noch einmal an und vergleiche diese mit Ralfs erster Codezeile.
Gruß Atilla
Antwortento top
#5
(01.04.2015, 10: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.
Antwortento 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)
Antwortento 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.
Antwortento 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)
Antwortento 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
Antwortento 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)
Antwortento top


Gehe zu:


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