Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
936to940
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
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listenfeldausgabe

Listenfeldausgabe
26.12.2007 14:24:00
Sonnenpeter
Hallo,
ich komme mal wieder nicht weiter.
Das nachfolgende Makro soll die Daten (bei klick auf den entsprechenden Wert) des Listenfeldes in die betreffende Zelle eintragen.
Gleichzeitig soll es den Bildschirm scrollen wenn eine bestimmte Zelle erreicht ist.
Das funktioniert auch ganz gut.

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 = 0
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


Nun zu meinem Problem:
Wenn ich das Listenfeld scrolle (also die Bildlaufleiste des Listenfeldes mit der Maus bewege) erfolg auch ein Eintrag. Das soll aber nicht sein.
Das Makro wurde den Listenfeld durch Klick auf den Rahmen zugewiesen.
Gibt es eine andere Art der Makrozuweisung? Was mache ich da wieder verkehrt?
Gruß Sonnenpeter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listenfeldausgabe
26.12.2007 15:01:00
{Boris}
Hi,
Da es sich offensichtlich um ein Listenfeld aus den alten Formularelementen handelt, musst Du das einzig zur Verfügung stehende Ereignis "BeiÄnderung" nutzen:

Sub Listenfeld2_BeiÄnderung()
Call EintragenListenfeld1
End Sub


Grüße Boris

AW: Listenfeldausgabe
26.12.2007 15:41:00
Sonnenpeter
Hallo Boris,
ja es ist ein Listenfeld aus den alten Formularelementen.
Dein Vorschlag funktioniert leider auch nicht.
Wenn ich die Bildlaufleiste des Listenfeldes bewege erfolgt trotzdem ein Eintrag.
Gruß Sonnenpeter

AW: Listenfeldausgabe
26.12.2007 17:26:00
{Boris}
Hi,
...lad mal die Mappe - abgespeckt auf das Listenfeld - hoch - dann wird´s einfacher.
Grüße Boris

Anzeige
AW: Listenfeldausgabe
26.12.2007 18:44:06
Sonnenpeter
Hallo Boris,
hier die abgespeckte Version

Die Datei https://www.herber.de/bbs/user/48636.xls wurde aus Datenschutzgründen gelöscht


Gruß Sonnenpeter

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

Anzeige
AW: Listenfeldausgabe
27.12.2007 20:06:00
Sonnenpeter
Hallo Sepp,
erstmal Danke für Deine Hilfe!
Du hast wohl Nachtschicht gemacht (Josef Ehrensberger am 27.12.2007 01:20:44)
Leider funktioniert die Datei nicht (mit meinem Excel?)
Ich musste 2-mal über Reset raus.
Als Meldung kam (Kann Excel nicht schließen)?
Liegt das an meiner Version (XP)?
Gruß Sonnenpeter

Anzeige
AW: Listenfeldausgabe
27.12.2007 22:22:38
Josef
Hallo Peter,
komisch, bei mir läuft die Datei unter Xl2003 un xl2007 einwandfrei.
Gruß Sepp

AW: Listenfeldausgabe
27.12.2007 23:00:00
Sonnenpeter
Trotzdem Danke Sepp!
Ich suche mir einen Weg.
Gruß Sonnenpeter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige