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