1

「RightToLeft」プロパティが True のユーザーフォームを作成しました。「TextAlign」プロパティが「3 - fmTextAlignRight」であるリストボックスを作成しました。リストボックスには、リストボックスのサイズよりも長いテキストを含む 2 つの列と行が含まれているため、すべてのテキストを表示するように「ColumnWidths」プロパティを設定しました。

2 つの問題があります。

  1. ユーザーフォームを開くと、最初の列ではなく 2 番目の列の終わりが表示されます。

最初の問題

  1. 行間でスワップする SpinButton があります。リストボックスの高さを超える行がある場合、制限内の行を交換すると、同じ値を持つ 2 つの行が表示されます。

2番目の問題

スピンボタンの私の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

さて、私は2番目の問題を解決することに成功しました。

値の挿入後ではなく、前に最後のコマンド (listbox.Selected(new_index) = True) を記述する必要があります。

誰もが最初の問題の解決策を持っていますか?

ありがとう...

于 2012-12-18T22:38:36.990 に答える