2012-02-01 95 views
0

我是VB中的新手。我想在單擊第一個按鈕時將值存儲在數組中,並在單擊第二個按鈕時顯示結果。我成功地將值存儲在一個數組中。但我不能訪問第二個按鈕單擊事件相同的陣列..vb中的按鈕點擊事件

Dim i As Integer 
Dim ag(0 To 7000) As String 
Dim bg(0 To 7000) As String 

Private CommandButton1_Click() 
    i = 0 

    Sheets("New").Select 
    Range("B2").Select 

    While Not IsEmpty(ActiveCell) 
    ag(i) = ActiveCell.Value 
    i = i + 1 
    ActiveCell.Offset(1, 0).Select 
    Wend 

    i = 0 

    Sheets("New").Select 
    Range("D2").Select 

    While Not IsEmpty(ActiveCell) 
    bg(i) = ActiveCell.Value 
    i = i + 1 
    ActiveCell.Offset(1, 0).Select 
    Wend 
End Sub 

Private CommandButton2_Click() 
    UserForm1.Hide 
End Sub 

Private Sub Cell_Click() 
End Sub 

Private Sub CommandButton1_Click() 
End Sub 

Private Sub CommandButton2_Click() 
End Sub 

任何人都可以幫助我。

+2

當你發佈你的問題,你可以預覽(尤其是代碼格式)進行實時略低於點你正在輸入它。這樣做是個好主意,這樣你的帖子對那些試圖閱讀它來幫助你的人更加清楚。 (如果格式正確,也意味着其他人不必花費時間。)清晰的問題(包括清晰的代碼格式)可幫助您更快地獲得答案。 :) – 2012-02-01 03:39:38

+2

另外,在點擊第二次按鈕時訪問它們的問題是,你無能爲力。你的'CommandButton2_Click()'處理程序只是隱藏'Userform' - 它應該如何訪問由CommandButton1_Click()創建的數組? – 2012-02-01 03:42:22

+1

*「但我無法訪問第二個按鈕點擊事件中的相同數組。」*爲什麼不? – 2012-02-01 03:53:52

回答

0

Nimmy

我的帖子是不是回答您的主要問題:)如果你看看Ken的和Cody的評論,那麼你將實現自動的答案是什麼作爲;)

我忍不住評論當我看到你的代碼和你的陳述,你是一個新手。我記得我在學習編碼和像SO這樣的論壇的時候確實幫助我提高了編碼技能。所以,你可以認爲這是一個回報:-D

1)你的情況,這是確定您已經變暗我作爲整數但是當你正在處理這對於例如32768更大的行會發生什麼行。在VBA Excel中工作時,可以安全地使用我只要

2)。選擇是在VBA中工作時發生錯誤的主要原因,更不用說他們會減慢代碼。相同的代碼也可以寫成下面給出的代碼。我假設在第一行和最後一行之間沒有空白值。

Dim i As Long 
Dim ag(0 To 7000) As String 
Dim bg(0 To 7000) As String 
Dim ws As Worksheet 

Private CommandButton1_Click() 
    Set ws = Sheets("New") 

    With ws 
     For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row 
      ag(i) = .Range("B" & i).Value 
     Next 
     For i = 2 To .Range("D" & .Rows.Count).End(xlUp).Row 
      bg(i) = .Range("D" & i).Value 
     Next 
    End With 
End Sub 

HTH是的,快樂編碼;)

希德