0
我有一個列表框包含10次。我有UP和DOWN按鈕來上下移動項目。我的VBA只在我將listbox multiselect屬性設置爲'None'時才起作用。對於多選=簡單的選擇是在有效使用空的拋出錯誤,如在這行代碼如何將列表框中的項目向上和向下移動訪問VBA?
sText = lbfNames.Column(0, iIndex)
我VBA
Private Sub cmdUP_Click()
Dim sText As String
Dim iIndex As Integer
iIndex = lbfNames.ListIndex
'check: only proceed if there is a selected item
If lbfNames.ListCount > 1 Then
'index 0 is top item which can't be moved up!
If iIndex <= 0 Then
MsgBox ("Can not move the item up any higher.")
Exit Sub
End If
' If iIndex = -1 Or lbfNames.ListCount > 1 Then
'save items text and items indexvalue
sText = lbfNames.Column(0, iIndex)
lbfNames.RemoveItem iIndex
'place item back on new position
lbfNames.AddItem sText, iIndex - 1
'if you keep that item selected
'you can keep moving it by pressing cmdUp
lbfNames.Selected(iIndex - 1) = True
iIndex = iIndex - 1
End If
End sub
,我是嘗試轉換下面的C#代碼(在計算器中發現)訪問VBA引發錯誤。一些數據成員未找到。
public void MoveUp()
{
MoveItem(-1);
}
public void MoveDown()
{
MoveItem(1);
}
public void MoveItem(int direction)
{
// Checking selected item
if (listBox1.SelectedItem == null || listBox1.SelectedIndex < 0)
return; // No selected item - nothing to do
// Calculate new index using move direction
int newIndex = listBox1.SelectedIndex + direction;
// Checking bounds of the range
if (newIndex < 0 || newIndex >= listBox1.Items.Count)
return; // Index out of range - nothing to do
object selected = listBox1.SelectedItem;
// Removing removable element
listBox1.Items.Remove(selected);
// Insert it in new position
listBox1.Items.Insert(newIndex, selected);
// Restore selection
listBox1.SetSelected(newIndex, true);
}
是否有無論如何要做到這一點在access vba。
作品完美!!非常感謝。對於項目向下移動,我是否需要更改* Else *部分中的代碼? – sam
@sam確實,Else部分中的代碼以及topSelection變量(因爲現在底部的項目是限制)。最簡單的方法就是嘗試調整向下移動的功能,並在與此功能比較時看到如何將它們組合成一個更通用的功能(如C#示例)。嘗試一下,玩一玩,當你陷入困境時只是問一個新問題。 – Yoh