listbox1.additem("text") Ska du hämta värdena från en tabell, skriva in dem manuellt eller göra det via VBA-kod? Ska du göra det manuellt eller från en tabell kan du använda den fina guiden du får när du skapar listrutan. När du har använt den en gång kan du se hur inställningarna blir och så kan du skippa guiden nästa gång! :) via vba-kod Du kan göra såhär då: Du kan bygga din egen list/combobox funktion.<br>Sv: använda listbox
index börjar på 0
kolla på Microsofts hemsida, har om VB där och slå i MSDN
annars är det bara att öppna precis vilken nybörjarbok i VB som helst
för mer info.
/EmmaSv: använda listbox
/JohanSv: använda listbox
gör så här nu men skulle vilja ha mer kontroll...
Listruta11.RowSourceType = "Table/Query"
Listruta11.RowSource = "SELECT..."Sv: använda listbox
Listruta0.RowSourceType = "Värdelista"
Listruta0.RowSource = "ett;två;tre"
Det känns inte som om det är optimalt att sätta RowSourecType på detta sätt med strängvärden, men det verkar inte gå med index... Sätt egenskapen i designläge istället!
/JohanSv: använda listbox
<br>
Exempel som fungerar likadant som standard:
<code>
Private mDB As Database
Private mCol As New Collection
Private mLastId As Long
Public Function MyList(ByVal Ctrl As ComboBox, ByVal Id As Long, ByVal Row As Long, ByVal Col As Long, ByVal Code As Long) As Variant
Dim rsTemp As DAO.Recordset
Dim Widths() As String
Select Case Code
Case acLBInitialize 'Initialize Nonzero if the function can fill the list; False (0) or Null otherwise.
MyList = mLastId + 1
mLastId = MyList
Case acLBOpen 'Open Nonzero ID value if the function can fill the list; False or Null otherwise.
Set mDB = CurrentDb()
Set rsTemp = mDB.OpenRecordset(Ctrl.RowSource, dbOpenSnapshot)
mCol.Add rsTemp, "#" & Id
MyList = Id
Case acLBGetRowCount 'Number of rows Number of rows in the list (can be zero); –1 if unknown.
Set rsTemp = mCol("#" & Id)
rsTemp.MoveLast
MyList = rsTemp.RecordCount
Case acLBGetColumnCount 'Number of columns Number of columns in the list (can't be zero); must match the property sheet value.
MyList = Ctrl.ColumnCount
Case acLBGetColumnWidth 'Column width Width (in twips) of the column specified by the col argument; –1 to use the default width.
Widths = Split(Ctrl.ColumnWidths, ";")
Select Case Col
Case LBound(Widths) To UBound(Widths)
If Len(Widths(Col)) Then
MyList = Widths(Col)
Else
MyList = -1
End If
Case Else
MyList = -1
End Select
Case acLBGetValue 'List entry List entry to be displayed in the row and column specified by the row and col arguments.
Set rsTemp = mCol("#" & Id)
If Ctrl.ColumnHeads Then
If Row Then
rsTemp.MoveFirst
rsTemp.Move Row + 1
MyList = rsTemp(Col).Value
Else
MyList = rsTemp(Col).Name
End If
Else
rsTemp.MoveFirst
rsTemp.Move Row
MyList = rsTemp(Col)
End If
Case acLBGetFormat 'Format string Format string to be used to format the list entry displayed in the row and column specified by the row and col arguments; –1 to use the default format.
MyList = -1
Case acLBEnd 'End (the last call to a user-defined function always uses this value) Nothing.
Set rsTemp = mCol("#" & Id)
rsTemp.Close
mCol.Remove "#" & Id
If mCol.Count = 0 Then Set mDB = Nothing
Case acLBClose '(Not used) Not used.
End Select
End Function
</code>
För att använda den skriver du bara MyList som RowSourceType och anger en RowSource.