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

Catia宏UserForm ListBox重复点击Preview后空值问题求助

问题修复方案

核心问题原因

第二次及之后点击预览按钮出现空值,根源在于两个关键问题:

  1. 变量m和A未在每次点击时重置,导致索引越界,无法正确给列表框新行赋值;
  2. 未清空列表框旧数据,叠加新数据时逻辑混乱。

具体修复步骤

  1. 在预览按钮点击事件开头重置变量并清空列表框
    每次点击按钮时,先清空列表框,同时将行索引m重置为0,序号变量A恢复初始值(根据业务需求调整,比如起始值设为1)。
  2. 确认列表框列数配置
    检查ListBox2的ColumnCount属性是否设为5(代码中用到了0-4共5列),列数不足会导致数据无法显示。
  3. 验证计算变量有效性
    确保第二次点击时,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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:47