You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CATIA宏Userform列表框点击预览按钮后清空问题求助

CATIA宏Listbox点击预览变空的问题解决

问题原因

  • 填充逻辑未触发:修改输入后sumTHK计算结果为0,代码进入Else分支,没有执行Listbox的AddItem操作;如果按钮事件开头存在未贴出的ListBox2.Clear语句,就会清空原有内容导致Listbox为空。
  • 索引变量m作用域错误:如果m是按钮点击事件的局部变量,每次点击会被重置为0;若sumTHK不为0时覆盖原有行,但如果sumTHK为0则无新内容添加,同时原有内容被清空就会显示为空。
  • UserForm重复实例化:按钮事件中如果存在重新创建UserForm实例的代码(如Set UserForm1 = New UserForm1),旧实例被销毁,新实例的Listbox默认是空的。

解决办法

1. 确保填充逻辑正常触发并控制Listbox内容

  • 先排查输入修改后的sumTHK计算逻辑,保证sumTHK <> 0的条件能正确触发填充代码。
  • 若需每次预览都刷新数据,在按钮点击事件开头添加清空和重置代码:
' 按钮点击事件开头添加
UserForm1.ListBox2.Clear
m = 0 ' 重置索引变量(如果使用m的话)

2. 修正索引变量m的作用域

  • 将m声明为模块级变量(在模块所有过程之外声明),避免每次点击被重置:
' 在VBA模块顶部添加
Dim m As Integer
  • 更推荐的方式是使用ListBox2.ListCount - 1获取当前最后一行索引,无需依赖m,代码更可靠:
With UserForm1.ListBox2
    .AddItem
    .List(.ListCount - 1, 0) = A
    .List(.ListCount - 1, 1) = k
    .List(.ListCount - 1, 2) = j
    .List(.ListCount - 1, 3) = GeoThick
    .List(.ListCount - 1, 4) = numX0
End With

3. 避免UserForm重复实例化

检查按钮事件代码,移除Set UserForm1 = New UserForm1这类重新创建实例的语句,确保始终使用同一个UserForm实例显示数据。

内容的提问来源于stack exchange,提问作者Salome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:50:24