Catia宏UserForm ListBox重复点击Preview后空值问题求助
问题修复方案
核心问题原因
第二次及之后点击预览按钮出现空值,根源在于两个关键问题:
- 变量
m和A未在每次点击时重置,导致索引越界,无法正确给列表框新行赋值; - 未清空列表框旧数据,叠加新数据时逻辑混乱。
具体修复步骤
- 在预览按钮点击事件开头重置变量并清空列表框
每次点击按钮时,先清空列表框,同时将行索引m重置为0,序号变量A恢复初始值(根据业务需求调整,比如起始值设为1)。 - 确认列表框列数配置
检查ListBox2的ColumnCount属性是否设为5(代码中用到了0-4共5列),列数不足会导致数据无法显示。 - 验证计算变量有效性
确保第二次点击时,k、j、GeoThick、calcRL1这些变量仍能正确获取数值,避免变量本身为空导致列表框显示空值。
修改后的代码示例
Private Sub btnPreview_Click() ' 重置索引与序号变量,清空列表框 m = 0 A = 1 ' 根据你的初始需求调整A的起始值 UserForm1.ListBox2.Clear ' --- 保留原有的计算逻辑(如循环计算sumTHK等部分) --- ' ... 你的sumTHK、calcRL1、k、j等变量的计算代码 ... If sumTHK <> 0 Then numX0 = Format(calcRL1, "###0.00") numLi = Format(calcRL2, "###0.00") If UserForm1.ChBoxShow = True Then UserForm1.ListBox2.AddItem UserForm1.ListBox2.List(m, 0) = A UserForm1.ListBox2.List(m, 1) = k UserForm1.ListBox2.List(m, 2) = j UserForm1.ListBox2.List(m, 3) = GeoThick UserForm1.ListBox2.List(m, 4) = numX0 m = m + 1 A = A + 1 End If Else calcRLcm = 0 End If ' --- 其他后续代码 --- End Sub
修复逻辑说明
- 清空列表框可避免旧数据残留,确保每次预览都是全新结果;
- 重置
m为0,保证每次从列表框第一行开始赋值,不会因上次的索引值导致越界; - 重置
A能保证序号从初始值开始递增,避免序号混乱。
内容的提问来源于stack exchange,提问作者Salome
相关产品推荐
相关产品推荐

