VBA变量和偏移量

时间:2010-07-16 14:58:36

标签: excel-vba vba excel

我无法抓取指定的变量并将其取消。我做错了什么?

Public Sub SampleBox_Change() 
    Dim str As Integer 
    If (SampleBox.ListIndex > -1) Then 
        str = SampleBox.List(SampleBox.ListIndex) 
    End If 
End Sub 

Public Sub Samplesdel(str As Integer) 
    Range(Range("BA1").EntireColumn, Range("BA1").Offset(0, -str).EntireColumn).Select 
End Sub 

Public Sub CommandButton1_Click()
    Application.Run "Samplesdel" 
End Sub

因此变量(str)是一个整数。我想用这个数字来选择一定数量的列(从BA1到“左边有很多列,值为str”)。所以如果用户选择8我想选择BA1并留下8列。

组合框位于用户表单中,其中设置了指定变量的代码。

我想在宏中使用指定的变量(我使用了select函数)。


因此变量str从userform组合框中分配。然后我想把这个变量传递给一个宏,我在偏移函数中使用它。

2 个答案:

答案 0 :(得分:1)

我刚刚在这里使用了你的代码片段,我假设你知道你要用这​​个来完成什么。正如另一个答案中所提到的,我认为这是一个范围问题;看起来你不能将你的陈述合并如下:

Public Sub SampleBox_Change() 
        Dim str As Integer 
        If (SampleBox.ListIndex > -1) Then 
            Range(Range("BA1").EntireColumn, Range("BA1").Offset(0, SampleBox.ListIndex).EntireColumn).Select
        End If 
    End Sub 

要添加一些未经请求的反馈,命名一个整数为“str”的变量会让其他任何必须读取代码的人感到困惑,名称“str”意味着“字符串”,这是一种不同的数据类型。

答案 1 :(得分:0)

詹姆斯,你在这里设置str的值是正确的吗?

Public Sub SampleBox_Change() 
    Dim str As Integer 
    If (SampleBox.ListIndex > -1) Then 
        str = SampleBox.List(SampleBox.ListIndex) 
    End If 
End Sub 

str的范围只是这个函数,任何其他函数都无法访问它。

您将什么值传递给Samplesdel作为参数?

Application.Run "Samplesdel"