AW: Listenfeldausgabe
26.12.2007 20:47:05
Sonnenpeter
Hallo,
ich stelle mal meinen Code ohne die Datei ein.
Private Sub Worksheet_Activate() 'ByVal Sh As Object)
Me.Range("A3").Value = Date
Me.Range("A4").Select
LadeListenfeld
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Columns(2)) Is Nothing Or _
Intersect(Target, Columns(3)) Is Nothing Then
If Intersect(Target, Range("$B$5:$B$54")) Is Nothing Then
Me.Shapes("Listenfeld1").Visible = False
Else
Me.Shapes("Listenfeld1").Visible = True
position_Listenfeld1
End If
End If
End Sub
Sub position_Listenfeld1()
Application.ScreenUpdating = False
NachZelle = ActiveCell.Row + 1
FarbZelle = ActiveCell.Row
Zelle = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Me.Shapes("Listenfeld1").Top = Range(Zelle).Top + Range(Zelle).Height
Me.Shapes("Listenfeld1").Left = Range(Zelle).Left
End Sub
Sub LadeListenfeld()
Application.ScreenUpdating = False
Bereich = ("B:C")
With Worksheets("Projekte")
.Columns(Bereich).Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlGuess
End With
Application.ScreenUpdating = True
Me.Shapes("Listenfeld1").ControlFormat.RemoveAllItems
Gesamt = ""
Zeilen = Application.WorksheetFunction.CountIf(Sheets _
("Projekte").Columns(2), Gesamt) - 1
With Worksheets("Zeit")
Set Lb = .Shapes("Listenfeld1")
With Sheets("Projekte").Columns("C:C")
Set c = .Find("A", LookIn:=xlFormulas, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Row
Do
FZ = c.Row '1Fz= Gefundene Zeile
ZF2 = Sheets("Projekte").Range("B" & FZ).Value
Lb.ControlFormat.AddItem ZF2
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Row firstAddress
End If
End With
End With
End Sub
Sub Listenfeld1_BeiÄnderung()
EintragenListenfeld1
End Sub
Sub EintragenListenfeld1()
Zelle = ActiveCell.Address
Zeile2 = ActiveCell.Row
Dim Lb As ListBox
Set Lb = ActiveSheet.ListBoxes("Listenfeld1")
PRO = Lb.List(Lb.ListIndex)
If PRO = "Projekte" Then
Exit Sub
Else
Me.Range(Zelle).Value = PRO
End If
Me.Range(Zelle).Select
Lb.ListIndex = 1
ActiveCell.Offset(1, 0).Select
If Zeile2 = 13 Then
ActiveWindow.ScrollRow = 12
End If
If Zeile2 = 18 Then
ActiveWindow.ScrollRow = 17
End If
If Zeile2 = 23 Then
ActiveWindow.ScrollRow = 22
End If
If Zeile2 = 28 Then
ActiveWindow.ScrollRow = 27
End If
If Zeile2 = 32 Then
ActiveWindow.ScrollRow = 31
End If
If Zeile2 = 37 Then
ActiveWindow.ScrollRow = 36
End If
If Zeile2 = 42 Then
ActiveWindow.ScrollRow = 41
End If
If Zeile2 = 47 Then
ActiveWindow.ScrollRow = 46
End If
End Sub
Die Tabelle ist so aufgebaut. Wenn ich auf den Bereich ("$B$5:$B$54") mit der Maus gehe erscheint automatisch das Listenfeld eine Zelle unterhalb der ausgewählten Zelle.
Durch klick auf das Listenfeld werden dann die entsprechenden Eintragungen in die ausgewählte Zelle vorgenommen.
Leider werden auch Eintragungen vorgenommen wenn ich die Laufleiste bewege.
Das soll aber nicht sein.
Weiterhin erscheint ab und zu die nebenstehende Fehlermeldung.
Kann ich hier nur so darstellen (Roter Ktreis mit weißem Kreuz 400)?
Überschrift "Microsoft Visual Basic"
Gruß Sonnenpeter