首页 > 解决方案 > 将值写入另一个工作表“下标超出范围”错误

问题描述

我对 VBA 完全陌生,需要编写一些简单的 VBA 代码来进行一些计算。我有一个名为 fKitsel 的用户表单,它使用户可以选择 6 个选项之一,并将所选选项的数量作为Public Kit As Integer变量写入工作表 Лист2(Variables)(我需要在我的组织中使用乌克兰语 excel 本地化)。当用户按下 cbsubmit 命令按钮时发生写入。这个子看起来像:

Sub cbsubmit_Click()       
    ActiveWorkbook.Sheets("Лист2").Range("A1").Value = Kit ' error points here
    Лист2.Activate
    Unload Me    
End Sub

当我单击 cbsubmit 按钮时,我收到一个“下标超出范围”错误,它指向我在代码块中注释的行。无法理解我做错了什么。

标签: excelvba

解决方案


您的 Userform 包含一个Frame名为 的控件,与模块中的变量Kit同名,这会导致这一行的混淆:KitModule1

ThisWorkbook.Worksheets("VarList").Range("A1").Value = Kit

这也意味着:

ThisWorkbook.Worksheets("VarList").Range("A1").Value = Me.Kit `(which is the frame control)

您可以为每个控件/变量提供不同且不同的名称(这是一种更好的方法,为您的变量/控件提供更具描述性的名称,例如frameKit

或者明确说明您指的是什么变量,例如:

ThisWorkbook.Worksheets("VarList").Range("A1").Value = Module1.Kit

推荐阅读