Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Befehl "Nichts tun" in VBA- Form
25.11.2016 13:29:04
Fynn
Guten Tag liebe Mitglieder,
ich hoffe ihr könnt mir bei folgendem Problem behilflich sein.
Ich habe in einer Spalte mit Dropdown- Menü die Möglichkeit zwischen den Worten "Won", "Lost", "Open" oder "Inhouse" zu wählen.
Ich möchte nun, in einer zweiten Spalte Prozentzahlen stehen haben. Wenn ich
"Won" auswähle, dann sollen 100% angezeigt werden, wenn "Lost" ausgewählt wird, dann 0% und bei der Auswahl von "Open" und "Inhouse", soll eine freie Eingabe einer beliebigen Prozentzahl möglich sein.
Ich habe bereits herausgefunden, dass das über eine einfache Excel-Formel nicht möglich ist, sondern wenn dann nur per VBA.
Ich hoffe meine Erläuterung des Problems ist verständlich!
Ich danke euch vielmals!
Mit freundlichen Grüßen
Fynn Borchert

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 13:32:35
selli
hallo fynn,
woher holt sich dein dropdown die werte?
schreibe daneben jeweils den wert der neben der dropdowanauswahl erscheinen soll.
dann mit SVERWEIS() den wert anzeigen lassen.
gruß
selli
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 13:35:39
Fynn
Hallo Selli,
die Werte für das Dropdown habe ich "frei" ohne Bezug eingetragen.
Ich bräuchte also eine passende Makro
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 13:37:09
Rudi
Hallo,
ins Modul des Blatts:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'Eingabe in A
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case LCase(Target)
Case "won": Target.Offset(, 1) = 1
Case "lost": Target.Offset(, 1) = 0
End Select
Target.Offset(, 1).NumberFormat = "0%"
End If
ERREXIT:
Application.EnableEvents = True
End Sub
Gruß
Rudi
Anzeige
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 13:45:49
Fynn
Hallo Rudi,
was muss ich tun, um den Befehl auf Spalte j und k zu begrenzen?
Also in J ist das Dropdown-Menu und in K die Prozentzahlen.
Ich habe bereits ein Modul für einen anderen Bereich des Arbeitsblattes eingetragen. Wie kann ich das von dir dann ergänzen?
Vielen Dank für deine Hilfe
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 13:51:07
selli
hallo fynn,
im code heisst es: u.a.:
If Target.Column = 1 Then 'Eingabe in A
spalte j wäre die 10
gruß
selli
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 14:00:29
Fynn
Ich habe jetzt folgendes eingetippt:
Public Letzter As Variant
Public Vorletzter As Variant
Public VorVorletzter As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VorVorletzter = Vorletzter
Vorletzter = Letzter
Letzter = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Range("O2:Z3128"), Target) Is Nothing Then
If Target = VorVorletzter Then
Target.Interior.ColorIndex = 6
Else
Target.Interior.ColorIndex = 3
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then 'Eingabe in A
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case LCase(Target)
Case "Won": Target.Offset(, 1) = 1
Case "Lost": Target.Offset(, 1) = 0
End Select
Target.Offset(, 1).NumberFormat = "0%"
End If
ERREXIT:
Application.EnableEvents = True
End Sub
Das Programm zeigt mir an, dass es einen Fehler beim Komplimieren gibt in Bezug auf die erste _ Zeile des Moduls von Rudi "

Private Sub Worksheet_Change(ByVal Target As Range)" und es passiert nichts in der Spalte J bei  _
den Prozentzahlen.
Wie muss ich jetzt weiter verfahren?

Anzeige
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 14:24:28
selli
hallo
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("O2:Z3128"), Target) Is Nothing Then
If Target = VorVorletzter Then
On Error Resume Next
Target.Interior.ColorIndex = 6
Else
Target.Interior.ColorIndex = 3
End If
End If
If Target.Column = 10 Then 'Eingabe in J
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case LCase(Target)
Case "Won": Target.Offset(, 1) = 1
Case "Lost": Target.Offset(, 1) = 0
End Select
Target.Offset(, 1).NumberFormat = "0%"
End If
ERREXIT:
Application.EnableEvents = True
End Sub
gruß
selli
Anzeige
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 14:42:14
Fynn
Ich wünschte ich könnte etwas anderes sagen, aber es ändert sich nichts an den Prozentzahlen.
Woran kann das liegen?
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 14:59:52
selli
hallo
ich glaube enable.evebts spielt dir gerade übel mit.
stelle sicher, dass die events aktiviert sind.
das erreichst du kurzfristig mit diesem makro:
sub ereignisse_ein()
Application.EnableEvents = True
End Sub
und dann dieses verwenden:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("O2:Z3128"), Target) Is Nothing Then
If Target = VorVorletzter Then
On Error Resume Next
Target.Interior.ColorIndex = 6
Else
Target.Interior.ColorIndex = 3
End If
End If
If Target.Column = 10 Then 'Eingabe in J
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case LCase(Target)
Case "Won": Target.Offset(, 1) = 1
Case "Lost": Target.Offset(, 1) = 0
End Select
Target.Offset(, 1).NumberFormat = "0%"
Application.EnableEvents = True
End If
ERREXIT:
Application.EnableEvents = True
End Sub
gruß
selli
Anzeige
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 15:10:42
Fynn
Hi Selli,
ich habe jetzt folgendes eingegeben:
Sub ereignisse_ein()
Application.EnableEvents = True
End Sub
Public Letzter As Variant
Public Vorletzter As Variant
Public VorVorletzter As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VorVorletzter = Vorletzter
Vorletzter = Letzter
Letzter = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Range("O2:Z3128"), Target) Is Nothing Then
If Target = VorVorletzter Then
Target.Interior.ColorIndex = 6
Else
Target.Interior.ColorIndex = 3
End If
End If
If Target.Column = 11 Then 'Eingabe in J
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case LCase(Target)
Case "Won": Target.Offset(, 1) = 1
Case "Lost": Target.Offset(, 1) = 0
End Select
Target.Offset(, 1).NumberFormat = "0%"
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Es passiert aber leider immer noch nichts...
Tut mir leid, dass ich keine Ruhe gebe, aber das wäre wirklich wichtig!
Viele Grüße
Fynn
Anzeige
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 15:14:14
UweD
Sub ereignisse_ein()
Application.EnableEvents = True
End Sub
Hast du das auch einmal laufen lassen?
Das ist notwendig, um sicherzustellen, dass die Events auch eingeschaltet sind
LG UweD
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 15:17:21
Fynn
Beim Ausführen zeigt er mir den fehler an, dass nach dem ersten End Sub nur Kommentare stehen dürfen und markiert das erste Public
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 15:22:47
UweD
OK.
Dann setz diese 3 Zeilen unter die Public Zeilen.
LG
AW: Befehl "Nichts tun" in VBA- Form
25.11.2016 15:26:59
Fynn
Habe ich gemacht und nun zeigt er keinen Fehler mehr an, aber es tut sich bei den prozentzahlen immer noch nichts...
was hälst du davon..
25.11.2016 15:29:53
UweD
..mal eine Musterdatei hochzuladen?
Anzeige
AW: Befehl "Nichts tun" in VBA- Form
26.11.2016 01:46:37
fcs
Hallo Fynn,
irgendjemand hat dir
Select Case LCase(Target)
in den Code geschrieben. Dann müssen die Werte in den Case Zeilen auch mit Kleinbuchstaben im Code geschrieben werden, damit der Wertvergleich funktioniert.
Dann hattest du geschrieben, dass du die Werteingaben per DropDown in Spalte J machst, also in Spalte 10.
Im Code jetzt aber Target plötzlich auf Spalte 11 geprüft.
Du musst dich schon einmal entscheiden was du willst und nicht immer neue Varianten bei deinen Fragen ins Spiel bringen.
Die Eingabe der Werte wenn nicht "Lost" oder "Won" kannst du auch gleich in einer Inputbox abfragen.
Gruß
Franz
Option Explicit
Public Letzter As Variant
Public Vorletzter As Variant
Public VorVorletzter As Variant
Sub ereignisse_ein()
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VorVorletzter = Vorletzter
Vorletzter = Letzter
Letzter = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim varWert
On Error Resume Next
If Not Intersect(Range("O2:Z3128"), Target) Is Nothing Then
If Target = VorVorletzter Then
Target.Interior.ColorIndex = 6
Else
Target.Interior.ColorIndex = 3
End If
End If
If Target.Column = 10 Then 'Eingabe in J
On Error GoTo ERREXIT
Application.EnableEvents = False
Select Case LCase(Target)
Case "won": Target.Offset(, 1) = 1
Case "lost": Target.Offset(, 1) = 0
Case Else
varWert = Application.InputBox("Bitte Prozentzahl eingeben:", _
"Eingabe bei Open oder Inhouse", Type:=1)
If varWert = False Then
Else
Target.Offset(, 1) = varWert / 100
End If
End Select
Target.Offset(, 1).NumberFormat = "0%"
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Anzeige
AW: Befehl "Nichts tun" in VBA- Form
28.11.2016 08:25:38
Fynn
Hallo Franz,
es funktioniert wunderbar!
Vielen Dank nochmal an Alle für eure Hilfe!!!
Viele Grüße
Fynn Borchert

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige