VBA第十四期 一种可以灵活显示的列表

一种可以灵活显示的列表。VBA列表设计的时候,我们有时候需要显示足够多的数据,但如果我们一次性定义过多列,例如UserForm2.ListBox1.ColumnCount = 100,这样定义有两个弊端,一是经常要拖动滚动条,二是大部分时间不需要看这么多数据。这样我们就需要设计一种可以灵活显示的列表,能够增加和减少显示列数。这里是通过一个文本框和两个按钮,一个增加显示列、一个减少显示列按钮,文本框用于显示列数。下面的程序是设计了一个多页,用于在一个窗口显示两个列表,所以就加入了If UserForm2.MultiPage1.Value = 0 Then语句用于判断我们当前列表是哪一页,具体实例如下:

Private Sub CommandButton9_Click()

Dim ylist() As String

Dim i, ii, iii, iiii, lstrw, lstcl, hzlstcl As Integer

lstrw = 600

zjlstcl = UserForm2.TextBox2.Text

zjlstcl = zjlstcl + 1

UserForm2.TextBox2.Text = zjlstcl

ReDim ylist(1 To lstrw, 1 To zjlstcl)

If UserForm2.MultiPage1.Value = 0 Then

hzlstcl = Sheets("表一").Range("a1").End(xlToRight).Column

For i = 1 To lstrw

  ylist(i, 1) = Sheets("表一").Range("a" & i)

Next

For i = 1 To lstrw

  iii = 1

  For ii = hzlstcl - zjlstcl + 2 To hzlstcl

  iii = iii + 1

  If i = 1 Then

  ylist(i, iii) = Right(Sheets("表一").Cells(i, ii), 5)

  Else

  ylist(i, iii) = Sheets("表一").Cells(i, ii)

  End If

  Next

Next

UserForm2.ListBox1.RowSource = ("")

UserForm2.ListBox1.ColumnCount = zjlstcl

UserForm2.ListBox1.List = ylist

UserForm2.RedoAction

End If

If UserForm2.MultiPage1.Value = 1 Then

hzlstcl = Sheets("周表一").Range("a1").End(xlToRight).Column

For i = 1 To lstrw

  ylist(i, 1) = Sheets("周表一").Range("a" & i)

Next

For i = 1 To lstrw

  iii = 1

  For ii = hzlstcl - zjlstcl + 2 To hzlstcl

  iii = iii + 1

  If i = 1 Then

  ylist(i, iii) = Right(Sheets("周表一").Cells(i, ii), 4)

  Else

  ylist(i, iii) = Sheets("周表一").Cells(i, ii)

  End If

  Next

Next

UserForm2.ListBox2.RowSource = ("")

UserForm2.ListBox2.ColumnCount = zjlstcl

UserForm2.ListBox2.List = ylist

UserForm2.RedoAction

End If

Endsub

以上的关键列表数据更新还用到了UserForm2.ListBox2.List属性,通过数组在传递列表之间以及其他数据转换中很方便,实现了在电机按钮【增加列】的时候更新现实列表的数据。其次还要注意的是【zjlstcl 】需要设置为公共变量,因为需要在zjlstcl 需要在增加、减少和显示列表三个过程中传递数据。最后就是UserForm2.RedoAction很重要,通过它我们才能实现列表显示的更新。

你可能感兴趣的:(windows,服务器,linux)