这段代码出现一个奇怪的错误。这段摘录是主要代码的开始。首先,它打开一个接受 3 个输入的表单。输入现在没有被使用,所以这不是问题。
Public triangle As Range
Public Height, Width, i As Integer
Sub asdf()
Set triangle = Selection
WeightsUserForm.Show
Height = triangle.Rows.Count
Width = triangle.Columns.Count
Debug.Print Height
Debug.Print Width
这给了我 12 作为高度和 12 作为宽度,根据我选择的内容,这是正确的。
现在这是当您在用户表单上按 OK 时运行的子程序:
Private Sub OKButton_Click()
Set triangle = Selection
Height = triangle.Rows.Count
Width = triangle.Columns.Count
Debug.Print Height
Debug.Print Width
这给了我 28.5 的高度和 99 的宽度。我不知道这是从哪里来的。我什至检查了我的用户窗体上的所有对象,好像它可能将其解释为我的选择(这显然是错误的,因为这些对象没有 rows 属性)。
理想情况下,如果这是真的,我想将我的初始选择保存为“公共变量”。
任何帮助表示赞赏。
编辑:进一步更新。我现在手动设置了变量三角形,即
triangle = Range("B3","M14")
这仍然给了我同样奇怪的维度。现在我真的很难过。
2xEDIT:当我不使用变量 Height 和 Width 而只是直接引用 triangle.Rows.Count 和 triangle.Columns.Count 它给了我正确的答案。所以我现在可以正常运行我的程序了。我仍然很想知道为什么使用变量是错误的。
所以你说这条线
Public Height,Width,i As Integer
只是将 i 声明为整数而不指定高度和宽度的类型?如果是这样,那将是我的问题。
我重做了它,将高度和宽度都正确地声明为整数,但它仍然以同样的方式出错。但是,使用私有变量 W 和 H 定义的工作方式相同。 耸耸肩