ListBox Eintrag markieren

30/04/2009 - 11:19 von Christina | Report spam
Hallo liebe NG,
in einem Wordformular habe ich eine Groupbox und darin 3 Listboxen. Wenn ich
nun einen Eintrag in der ersten Listbox anklicke, ist dieser markiert. Ebenso
in der zweiten. Um einen Eintrag in der dritten Listbox zu markieren, brauche
ich ZWEI Klicks. Die Eigenschaften der Listboxen sind bis auf die "Left" und
"TabIndex" gleich.
Ich komm nicht drauf, woran das liegen kann!!??!!
Vielleicht hat jemand einen Tipp fuer mich.
Vielen Dank vorab und beste Gruesse
Christina

Der Code fuer das Formular:
Private Sub UserForm_Initialize()
Unterschriften
End Sub

Public Sub Unterschriften()
'Liest die Daten für die Unterschriften (Chefarzt, Oberarzt, Assistenzarzt)
in die Listfelder ein
Dim arrCA(), arrOA(), arrAA()
Dim strName As String
Dim strTitle As String
Dim strChr As String
Dim strGruppe As String
Dim strArzt As String
' Dim strMail As String

Dim nAnz As Integer
Dim i As Integer
Dim x1 As Integer
Dim x2 As Integer
Dim x3 As Integer

Dim sPsr As String
Dim sDep As String
Dim sPatFA As String

lstCA.Clear
lstOA.Clear
lstAA.Clear

'Wenn Aufruf aus Vorlage Beleger oder Konsil, Schaltflàche anzeigen.
Select Case strAufrufendeProzedur
Case Is = "all_beleger.dot", "all_konsil.dot", "testedv.dot"
frmUnterschriften.cmdAbsender.Visible = True
Case Else
frmUnterschriften.cmdAbsender.Visible = False
End Select

If chkAlleAerzte.Value = True Then 'wenn die Option "Alle Ärzte" aktiv ist
strName = InsertByNumber("PatDicPsr", -1)
nAnz = Val(strName)
x1 = 0
x2 = 0
x3 = 0
ReDim arrCA(1)
ReDim arrOA(1)
ReDim arrAA(1)
For i = 0 To nAnz - 1
strName = InsertByNumber("PatDicPsrName", i)
strChr = InsertByNumber("PatDicPsrChr", i)
strTitle = InsertByNumber("PatDicPsrTitle", i)
strGruppe = InsertByNumber("PatDicJogDes", i)
strArzt = Trim(strTitle & " " & strChr & " " & strName)
Select Case UCase(InsertByNumber("PatDicJogJog", i))
Case "CA", "CAE", "CÄ", "KA", "KAE", "KÄ"
ReDim Preserve arrCA(x1)
arrCA(x1) = Format(strName, "!@@@@@@@@@@@@@@@") & ";" & strArzt
x1 = x1 + 1
Case "OA", "OAE", "OÄ", "CA"
ReDim Preserve arrOA(x2)
arrOA(x2) = Format(strName, "!@@@@@@@@@@@@@@@") & ";" & strArzt
x2 = x2 + 1
Case "AA", "AAE", "AÄ", "FA", "FAE", "FÄ"
ReDim Preserve arrAA(x3)
arrAA(x3) = Format(strName, "!@@@@@@@@@@@@@@@") & ";" & strArzt
x3 = x3 + 1
End Select
Next
lstCA.list() = arrCA
lstOA.list() = arrOA
lstAA.list() = arrAA
Else 'sonst werden nur die Ärzte der Fachabteilung angezeigt
sPatFA = GetValue("PatStaDep")
' Filter erstellen
If InStr(1, sPatFA, "INN") > 0 Then
sPatFA = "*INN*"
ElseIf InStr(1, sPatFA, "CH") > 0 Then
sPatFA = "*CH*"
End If

strName = InsertByNumber("PatDicPsr", -1) 'die Anzahl der Datensàtze
ermitteln
nAnz = Val(strName)
x1 = 0
x2 = 0
x3 = 0
ReDim arrCA(1)
ReDim arrOA(1)
ReDim arrAA(1)
For i = 0 To nAnz - 1
sPsr = InsertByNumber("PatDicPsr", i) 'Personalnummer ermitteln
SetValue "ABNCURPSR", sPsr 'Personalnummer auf aktuell setzen
sDep = GetValue("AbnCurPsrDepDef") 'FA des aktuellen Mitarbeiters
strName = GetValue("AbnCurPsrName")
strChr = GetValue("AbnCurPsrChr")
strTitle = GetValue("AbnCurPsrTitle")
strGruppe = GetValue("AbnCurPsrJogDes")
strArzt = Trim(strTitle & " " & strChr & " " & strName)
Select Case UCase(GetValue("AbnCurPsrJog")) 'Berufsgruppe ermitteln
Case "CA", "CAE", "CÄ", "KA", "KAE", "KÄ"
If sDep Like sPatFA Then
ReDim Preserve arrCA(x1)
arrCA(x1) = Format(strName, "!@@@@@@@@@@@@@@@") & ";" & strArzt
x1 = x1 + 1
End If
Case "OA", "OAE", "OÄ"
If sDep Like sPatFA Then
ReDim Preserve arrOA(x2)
arrOA(x2) = Format(strName, "!@@@@@@@@@@@@@@@") & ";" & strArzt
x2 = x2 + 1
End If
Case "AA", "AAE", "AÄ", "FA", "FAE", "FÄ"
If sDep Like sPatFA Then
ReDim Preserve arrAA(x3)
arrAA(x3) = Format(strName, "!@@@@@@@@@@@@@@@") & ";" & strArzt
x3 = x3 + 1
End If
End Select
Next
End If
lstCA.list() = arrCA
lstOA.list() = arrOA
lstAA.list() = arrAA


'Sortieren
'Aufruf der Funktion mit Übergabe des Objektnamens und Dubletten entfernen
Dim myObj As Object
If lstCA.ListCount > 0 Then
Set myObj = lstCA
Sortiere myObj
Duplikate myObj
End If

If lstOA.ListCount > 0 Then
Set myObj = lstOA
Sortiere myObj
Duplikate myObj
End If

If lstAA.ListCount > 0 Then
Set myObj = lstAA
Sortiere myObj
Duplikate myObj
End If

'Defaultauswahl erste Zeile der Listbox
If strAufrufendeProzedur = "testedv_1.dot" Then
If lstCA.ListCount > 0 Then lstCA.Selected(0) = True
If lstOA.ListCount > 0 Then lstOA.Selected(0) = True
If lstAA.ListCount > 0 Then lstAA.Selected(0) = True
End If

lstCA.SetFocus

SetValue "ABNCURPSR", "" 'Personalnummer zurücksetzen

End Sub
 

Lesen sie die antworten

#1 Thomas Gahler
01/05/2009 - 21:37 | Warnen spam
Hallo Christina

in einem Wordformular habe ich eine Groupbox und darin 3 Listboxen. Wenn
ich
nun einen Eintrag in der ersten Listbox anklicke, ist dieser markiert.
Ebenso
in der zweiten. Um einen Eintrag in der dritten Listbox zu markieren,
brauche
ich ZWEI Klicks. Die Eigenschaften der Listboxen sind bis auf die "Left"
und
"TabIndex" gleich.
Ich komm nicht drauf, woran das liegen kann!!??!!


Kann ich dir auch keine Tipp geben. Meines erachtens liegt es wohl nicht am
Code. Ich würde die Listbox nochmals nue erzeugen. (alte Löschen, eine der
anderen beide in markieren und mit gedrückert Ctrl-Taste verschieben, dann
hast du beriets eine mit garantiert den gelichen Eigenschaften)


Thomas Gahler
MVP für Word
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows Vista (SP1), Office 2007 (SP?)

Ähnliche fragen