1

我创建了一个“RightToLeft”属性为 True 的用户表单。我创建了一个“TextAlign”属性为“3 - fmTextAlignRight”的列表框。列表框包含两列和两行,其文本长度超过列表框大小,因此我设置了“ColumnWidths”属性以查看所有文本。

我有两个问题:

  1. 打开用户窗体时,我看到第二列的末尾而不是第一列。

第一个问题

  1. 我有一个 SpinButton,它在行之间交换。当我的行数超过列表框高度时,当我在限制的行之间交换时,我看到两行具有相同的值。

第二个问题

我的旋转按钮的 VBA 代码:

Private Sub SpinButton1_SpinDown()
    Call SwapBetweenTwoLines(False, ListBox1)
End Sub

Private Sub SpinButton1_SpinUp()
    Call SwapBetweenTwoLines(True, ListBox1)
End Sub

Sub SwapBetweenTwoLines(up As Boolean, listbox)
    Dim index As Integer, new_index As Integer
    index = listbox.ListIndex
    If (((up = True) And (index > 0)) Or _
        ((up = False) And (index < listbox.ListCount - 1))) Then
        If (up = True) Then
            new_index = index - 1
        Else
            new_index = index + 1
        End If

        Dim key As String, value As String
        key = listbox.Column(0, index)
        value = listbox.Column(1, index)
        listbox.Column(0, index) = listbox.Column(0, new_index)
        listbox.Column(1, index) = listbox.Column(1, new_index)
        listbox.Column(0, new_index) = key
        listbox.Column(1, new_index) = value
        listbox.Selected(new_index) = True
    End If
End Sub

谢谢您的帮助...

4

1 回答 1

0

好吧,我已经成功解决了第二个问题。

我应该在插入值之前写最后一个命令(listbox.Selected(new_index) = True),而不是之后。

有人有解决第一个问题的方法吗?

谢谢...

于 2012-12-18T22:38:36.990 回答