2010-07-16 218 views
0

我遇到了問題,請將我指定的變量取消並取消它。我究竟做錯了什麼?VBA變量和偏移量

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從用戶窗體組合框中分配。然後我想將這個變量傳遞給我在偏移函數中使用它的宏。

+0

你想做什麼?你的代碼有幾個問題,如果你試圖用文字解釋你想要做什麼,這將會有所幫助。 – 2010-07-16 15:24:14

回答

0

James,你在這裏設置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" 
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」意味着「字符串」,一種不同的數據類型。

+0

+1爲混亂問題 - 優秀 – Dave 2010-07-19 19:46:30