gpt4 book ai didi

excel - VBA-对列表框中的数据进行排序,排序有效但列表框中的数据未更改

转载 作者:行者123 更新时间:2023-12-04 19:51:22 33 4
gpt4 key购买 nike

传递了一个列表框,数据放在一个数组中,对数组进行排序,然后将数据放回列表框。起作用的部分是将数据放回列表框中。就像列表框是按值传递而不是按引用传递一样。

这是执行排序的子程序和调用排序子程序的代码行。

Private Sub SortListBox(ByRef LB As MSForms.ListBox)

Dim First As Integer
Dim Last As Integer
Dim NumItems As Integer
Dim i As Integer
Dim j As Integer
Dim Temp As String
Dim TempArray() As Variant

ReDim TempArray(LB.ListCount)

First = LBound(TempArray) ' this works correctly
Last = UBound(TempArray) - 1 ' this works correctly

For i = First To Last
TempArray(i) = LB.List(i) ' this works correctly
Next i

For i = First To Last
For j = i + 1 To Last
If TempArray(i) > TempArray(j) Then
Temp = TempArray(j)
TempArray(j) = TempArray(i)
TempArray(i) = Temp
End If
Next j
Next i ! data is now sorted

LB.Clear ! this doesn't clear the items in the listbox

For i = First To Last
LB.AddItem TempArray(i) ! this doesn't work either
Next i

End Sub

Private Sub InitializeForm()

' There's code here to put data in the list box

Call SortListBox(FieldSelect.CompleteList)

End Sub

感谢您的帮助。

最佳答案

这对我在 Excel 2003 上的一个非常基本的用户窗体和一个名为 ListBox1 的列表框上有效:

Private Sub UserForm_Initialize()

ListBox1.AddItem "john"
ListBox1.AddItem "paul"
ListBox1.AddItem "george"
ListBox1.AddItem "ringo"

SortListBox ListBox1

End Sub

然后是您的 SortListBox,除了修复以 ! 开头的三个注释之外而不是'

您的初始化程序的唯一区别是名称(UserForm_InitializeInitializeForm)。确保使用用户窗体代码页顶部的对象和事件选择器,以确保事件处理程序得到正确命名

关于excel - VBA-对列表框中的数据进行排序,排序有效但列表框中的数据未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/345315/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com