Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Änderungsverfolgung für Combo-Boxen

Änderungsverfolgung für Combo-Boxen
02.09.2008 23:37:00
Jesko
Guten Abend an alle im Forum,
habe in einem Archivthread für eine Änderungsverfolgung (mit Erzeugung eines Kommentarfelds) in "normalen" Excel-Zellen folgenden Code gefunden:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim Zelle As Range
On Error GoTo Fehler
If (Target.Column = 5 Or Target.Column = 7 Or Target.Column = 11) And Target.Count = 1 Then
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & . _
_
_
Value & _
" / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & _
_
_
"Änderung: " _
& .Value & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
End If
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


Läßt sich so etwas auch als Änderungsverfolgung von Eintragungen in Combo-Boxen programmieren bzw. kombiniert für "normale" Zellen & Combo-Boxen in ein- und demselben Tabellenblatt?
Bin gespannt ...
Grüße
Jesko

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderungsverfolgung für Combo-Boxen
03.09.2008 14:54:00
fcs
Hallo Jesko,
für jede Combobox (aus der Symbolleiste Steuerelemente - Toolbox!)
muss du eine entsprechende Prozedur anlegen.
Dann schaut der kombinierte Code etwa wie folgt aus.
Gruß
Franz

Private Sub ComboBox1_Change()
Call KommentarAenderung(Wert:=ComboBox1.Value, Zelle:=Me.Range("D2"))
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 5 Or Target.Column = 7 Or Target.Column = 11) And Target.Count = 1 Then
Call KommentarAenderung(Wert:=Target.Text, Zelle:=Target)
'Call KommentarAenderung(Wert:=Target.Value, Zelle:=Target)
End If
End Sub
Private Sub KommentarAenderung(Wert As Variant, Zelle As Range)
'Wert ist Wert nach Änderung
'Zelle ist Zelle in die bei Wertänderung der Kommentar eingetragen werden soll
Dim strValue As String
On Error GoTo Fehler
With Zelle
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " _
& Wert & " / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) _
& "Änderung: " & Wert & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


Anzeige
AW: Änderungsverfolgung für Combo-Boxen
03.09.2008 23:23:37
Jesko
Hallo Franz,
dankeschön für Deine Antwort.
Beim Kompilieren meldet der Visual Basic Editor folgenden Fehler:
"Mehrdeutiger Name: ComboBox1_Change"
Dies rührt sicherlich daher, dass es in dem Gesamtcode noch ein weiteres Ereignis gibt, das über "ComboBox1_Change" ausgelöst wird.
Kann ich diese Fehlermeldung irgendwie umgehen? Zum besseren Verständnis habe ich den gesamten Code nachstehend noch einmal eingefügt. Die ComboBox findet sich in der Spalte AD (Spalte 30).
Jesko
Option Explicit
Private Zelle As Range 'Variable zum Merken des Addresse der selektierten Zelle

Private Sub ComboBox1_Change()
Dim Zeile As Long
'Aktionen nach Wertänderung der ComboBox
On Error GoTo Fehler
Application.EnableEvents = False
Zeile = Zelle.Row
If Me.ComboBox1.Value = "" Then
Zelle.ClearContents
Zelle.Select
'Formeln in Spalten AE bis AK löschen
Range(Cells(Zeile, 31), Cells(Zeile, 37)).ClearContents
Else
If Not IsNull(Me.ComboBox1.Value) Then
'KundenNr (Text aus Combobox wird in Zahl umgewandelt)
Cells(Zeile, 30).Value = Val(Me.ComboBox1.Value)
'Formeln in Spalten AE bis AK eintragen
Cells(Zeile, 31).FormulaR1C1 = _
"=IF(VLOOKUP(RC[-1],Auswahlliste,2,FALSE)=0,"""",VLOOKUP(RC[-1],Auswahlliste,2,FALSE))" 'Nr. _
_
Cells(Zeile, 32).FormulaR1C1 = _
"=IF(VLOOKUP(RC[-2],Auswahlliste,3,FALSE)=0,"""",VLOOKUP(RC[-2],Auswahlliste,3,FALSE))" ' _
Zusatz
Cells(Zeile, 33).FormulaR1C1 = "=VLOOKUP(RC[-3],Auswahlliste,5,FALSE)" 'Name 1
Cells(Zeile, 34).FormulaR1C1 = _
"=IF(VLOOKUP(RC[-4],Auswahlliste,6,FALSE)=0,"""",VLOOKUP(RC[-4],Auswahlliste,6,FALSE))" ' _
Name2
Cells(Zeile, 35).FormulaR1C1 = "=VLOOKUP(RC[-5],Auswahlliste,7,FALSE)" 'Strasse
Cells(Zeile, 36).FormulaR1C1 = "=VLOOKUP(RC[-6],Auswahlliste,8,FALSE)" 'PLZ
Cells(Zeile, 37).FormulaR1C1 = "=VLOOKUP(RC[-7],Auswahlliste,9,FALSE)" 'Ort
End If
End If
GoTo Beenden
Fehler:
If Err.Number = 91 Then
MsgBox "Bitte selektieren Sie zunächst eine andere Zelle!" & vbLf & _
"Diese Meldung erscheint nach dem Öffnen der Datei, wenn in der angezeigten " & _
"ComboBox direkt der Wert geändert wird ohne vorher eine andere Zelle zu selektieren."
Else
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End If
Beenden:
Application.EnableEvents = True
End Sub



Private Sub ComboBox1_Change()
Call KommentarAenderung(Wert:=ComboBox1.Value, Zelle:=Me.Range("D2"))
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 5 Or Target.Column = 7 Or Target.Column = 11) And Target.Count = 1 Then
Call KommentarAenderung(Wert:=Target.Text, Zelle:=Target)
'Call KommentarAenderung(Wert:=Target.Value, Zelle:=Target)
End If
End Sub



Private Sub KommentarAenderung(Wert As Variant, Zelle As Range)
'Wert ist Wert nach Änderung
'Zelle ist Zelle in die bei Wertänderung der Kommentar eingetragen werden soll
Dim strValue As String
On Error GoTo Fehler
With Zelle
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " _
& Wert & " / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) _
& "Änderung: " & Wert & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error GoTo Fehler
With Me.ComboBox1
'Auf Spalte mit Kundennummer prüfen
If Target.Column = 30 And Target.Row > 1 And Target.Cells.Count = 1 Then
Application.EnableEvents = False
Set Zelle = Target
.Value = Target.Value
.Top = Target.Top
.Left = Target.Offset(0, 1).Left
.Visible = True
Application.EnableEvents = True
Else
Set Zelle = Nothing
.Visible = False
End If
End With
GoTo Beenden
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
Beenden:
Application.EnableEvents = True
End Sub


Anzeige
AW: Änderungsverfolgung für Combo-Boxen
04.09.2008 09:39:33
fcs
Hallo Jesko,
dann muss du die Zeile

Call KommentarAenderung(Wert:=ComboBox1.Value, Zelle:=Me.Range("D2"))

an passender Stelle in deiner Prozedur einfügen.
Wahrscheinlich unmittelbar vor Zeile "Goto Benden".
Die Zelladresse für den Kommentar muss du ggf. ändern, z.B in AD2.
Die 2. Combox1_Change-Prozedur muss du wieder löschen.
Gruss
Franz

AW: Änderungsverfolgung für Combo-Boxen
04.09.2008 10:49:00
Jesko
Hallo Franz,
leider erhalte ich dann folgende Fehlermeldung:
"Fehler beim Kompilieren: Sub oder Function nicht definiert".
Wie kann ich die gesamte Spalte AD als Adresse für den Kommentar festlegen?
Gruß
Jesko
Anzeige
AW: Änderungsverfolgung für Combo-Boxen
04.09.2008 10:51:30
Jesko
Hallo Franz,
leider erhalte ich dann folgende Fehlermeldung:
"Fehler beim Kompilieren: Sub oder Function nicht definiert".
Wie kann ich die gesamte Spalte AD als Adresse für den Kommentar festlegen?
Gruß
Jesko
AW: Änderungsverfolgung für Combo-Boxen
08.09.2008 11:14:58
fcs
Hallo Jesko,
evtl. hast du die Function KommentarAenderung nicht mit in dein VBA-Projekt kopiert oder an die falsche Postion im VBA-Projekt.
Ein Kommentar ist immer an eine einzelne Zelle gebunden. Was meinst du mit "ganze Spalte AD als Adresse für den Kommentar festlegen" ?
Gruß
Franz
AW: Änderungsverfolgung für Combo-Boxen
08.09.2008 19:55:23
Jesko
Hallo Franz,
sei mir bitte noch einmal behilflich:
Ich hatte die komplette Zeile "Call KommentarAenderung(Wert:=ComboBox1.Value, Zelle:=Me.Range("AD2")) wie von Dir beschrieben vor der Zeile "GoTo Beenden" eingefügt.
Vielleicht könntest Du mir bitte noch einmal zeigen, wie der Code genau aussehen müsste.
Mit ganzer Spalte AD als Adresse für den Kommentar meine ich, dass die ganze Prozedur für die Zellen AD2, AD3, AD4 etc. zur Anwendung kommen soll.
Vielen Dank vorab.
Jesko
Anzeige

301 Forumthreads zu ähnlichen Themen


Hallo Hans,
wenn ich die URLs richtig interpretiere, haben wir im Forum soeben die Zahl von 1 Million Beiträgen überschritten.
Herzlichen Glückwunsch zu dem Erfolg Deines "Babys"!
Gruß
Martin

Hallo Leute,
heute habe ich wieder mal ein einfaches Problem für Euch, an dem ich aber nicht weiter kommen:
Ich möchte die Arbeitsblätter in meiner Arbeitsmappe zählen. Das ist ja kein Problem (ThisWorkbook.sheets.count).
wenn das makro mehr als ein Arbeitsblatt zählt (also das Erge...

Hallo zusammen!
Ich habe da als blutiger Anfänger in VBA zwei Fragen:
1.) Wie kann ich in meiner Tabelle in jeder zweiten Spalte 4 leere Spalten einfügen lassen?
2.) Dann möchte ich unter den Inhalt der ersten fünf Spalten (A-E) den Inhalt der zweiten 5 Spalten (F-J) usw. In der grö...

Guten Morgen!
Ich hätte folgendes Problem: Ich erhalte automatisiert Exceltabellen, bei denen nicht alle Zellen einer Zeile gefüllt werden, wenn dort der Inhalt einer darüberliegenden Zeile stehen sollte. Zur Weiterverarbeitung muss ich aber diese Zellen mit den dazugehörigen Werten füllen....

Hallo,
google spuckt Zu "Excel" und "Häufigkeitslücken" lediglich 3 Treffer aus, die nicht gerade brauchbar für meine Aufgabe sind.
Ich muss für 3 Variablen eine Typisierung mit einer Häufigkeitslücke durchführen.
Hiermit bin ich fast gänzlich überfragt. Mit Quantilen hatte ich das...

Hallo zusammen,
ich habe eine lange Liste, in der in einer Spalte Daten stehen, wo ab und zu vorangehende Nullen nötig sind (mal eine - mal 2...etc.) - und manchmal auch keine.
Wie kann ich diese Zellen formatieren, das die vorangehenden "Nullen" nicht automatisch weggelassen werden?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige