|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 ndt3 于 2023-5-4 13:24 编辑
各位老师,序列5 使用双击listbox输入数据时,自动转到下一列单元格,展开下一列单元格的备选项listbox 正常
现在改为序列5 单击listbox输入数据时,自动转到下一列单元格,展开下一列单元格的备选项listbox 不能显示备选项,设置断点后,发现listbox实际上加载了数据,但就是不显示数据.listbox正常显示.
详情请参阅附件!
反复查找,测试,都找不到原因到底出在那里,只好求助各位老师,烦劳各位老师了.
谢谢各位老师!!!
测试代码,有bug,需要先运行一下模块8中的代码,否则报错!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim csj, csj2, ss, szh
'这里为打开选项的控制程序
dql = Target.Column
dqh = Target.Row
If dqh <= 2 Or dqh > 302 Or Target.Count <> 1 Or Cells(2, dql).Value = "" Then Exit Sub '不在区域内\选区不为1\表头为空白则退出
If Target.Value <> "" Then TextBox1.Text = Target.Value
If Target.Value = "" Then TextBox1.Text = ""
If scdl = "" Then Call szbl '当公共变量中设置变量为空白时,则表示代码中段过,有异常,则重新启动一次变量设置
ListBox1.Clear '需要清空一下控件,否则会自动输入上次的选择内容
' TextBox1 = ""
' ListBox1.Visible = False
' TextBox1.Visible = False
'dygyz = Target.Value '用于判断单元格原值是否改变
szh = ActiveWorkbook.ActiveSheet.Cells(1, 16).Value '字号设置单元格
lkd = Target.Width * 20 / 10 * 2 '总列宽
lgd = Target.Height * 20 / 6 * 3
Dim TF As Boolean
If InStr(1, "序列1,序列2,序列3,序列4", Cells(2, dql).Value, vbTextCompare) > 0 Then '判断多列状况
dls = 900: ls = 4
Else
dls = ""
ls = 1
End If
If InStr(1, scdl, Cells(2, dql).Value, vbTextCompare) > 0 Then
If TF Then
ListBox1.Visible = False
TextBox1.Visible = False
Else
With Me.TextBox1
.Top = Target.Top '顶点位置
.Left = Target.Left '左边距
.Width = Target.Width '+ dls '宽度
.Height = Target.Height '高度
.Activate
.Visible = True
End With
With ListBox1
.ColumnHeads = False '去掉表头
.ColumnCount = ls '列表框显示列数
If dls <> "" Then
.Width = dls '总列宽
.ColumnWidths = "150;" & 150 & ";" & 100 & ";" & 200 ' & ";" & 200 '& ";" & 100 '每列宽度
Else
.Width = lkd '总列宽
.ColumnWidths = lkd
End If
.ListStyle = fmListStylePlain
.Visible = True
.Top = Target.Top
.Left = Target.Left + Target.Width
'
.Height = lgd
.Font.Size = 20
.MultiSelect = 0
' .Clear
End With
End If
End If
Dim arr
If InStr(1, scdl, Cells(2, dql).Value, vbTextCompare) > 0 And Cells(2, dql).Value <> "" Then
csj = Sheets("信息表").Rows("1:1").Find(Cells(2, dql), , , 1, , xlPrevious).Column
arr = Sheets("信息表").Range(Sheets("信息表").Cells(1, csj), Sheets("信息表").Cells(Sheets("信息表").Cells(2000, csj).End(xlUp).Row, csj))
Else
End If
'Application.ScreenUpdating = False
'看看不能刷新是不是,屏幕刷新或者事件响应未打开,不能排除故障
Application.ScreenUpdating = True
Application.EnableEvents = True
' ListBox1.Enabled
ListBox1.Visible = True
Me.ListBox1.Clear
ListBox1.List() = arr '这里测试,单击输入后,实际数据已经加载,但listbox1显示是空的!!!!
' TextBox1.Value = "1"
' ListBox2.List = ListBox1.List'加载另外一个listbox能正常显示数据,但listbox1自动跳下一列后,不能显示.打开事件触发,重新模拟点击单元格触发也不行,只能第一次运行正常,单击listbox输入后,到下一列就不能正常显示
' ListBox2.Width = ListBox1.Width
' ListBox2.Top = ListBox1.Top
aa = ListBox1.ListCount '测试实际上数据时加载到listbox里了,但未能正常显示
TextBox1.Value = ""
Application.ScreenUpdating = True
End Sub
貌似listbox有bug,数据加载了,不能显示出来.
|
|