2012-08-08 79 views
1

我有一個Excel表單,它從80行工作表的每一行讀取數據並將每個單元格填充到文本框中。Excel VBA - 使用'next'和'previous'按鈕瀏覽工作表

初始表單的代碼如下。

Private Sub UserForm_Initialize() 

txtbox_revri_idnum.Text = Worksheets("Risk&Issues").Range("A4").Value 
txtbox_revri_projname.Text = Worksheets("Risk&Issues").Range("B4").Value 
txtbox_revri_isrefnum.Text = Worksheets("Risk&Issues").Range("C4").Value 
txtbox_revri_riskrefnum.Text = Worksheets("Risk&Issues").Range("D4").Value 
... 
txtbox_revri_projname.SetFocus 

End Sub 

理想情況下,我希望做的是當按下「下一步」按鈕,下一行(A5,B5,C5,D5 ...)被解析到一個數組,範圍用下一行的數據更新。相反,「上一個」按鈕將以相反方向(A3,B3,C3,D3 ...)進行。實質上,我想在工作表中上下瀏覽,查看整個行,並在每個單元格中添加一個新的文本框。

我試過各種各樣的VBA組合(考慮到我是VBA新手,雖然有一些Java和PHP的經驗)。我現在的「下一個」按鈕的代碼具有下面的代碼。

Private Sub button_revri_next_Click() 

txtbox_revri_idnum.Text = ActiveCell.Next.Text 
... 
End Sub 

謝謝......我知道你們比我更聰明!

+0

的'next_Click'處理程序應遞增包含行數的變量和調用一個函數這在列讀出細胞填充文本框。 'prev_Click'處理程序應該類似地減少變量。在'initialize'函數中,設置變量並調用填充例程。 – 2012-08-08 08:50:57

+0

問什麼可能是一個愚蠢的問題,但我如何捕獲變量中的行號?然後加入到這封信中,例如B + row_num,C + row_num,... – user1584022 2012-08-08 09:36:53

回答

0

你可以使用.Offset來實現你想要的。

嘗試和測試

Dim i As Long, j As Long 
Dim rng As Range 

Private Sub UserForm_Initialize()  
    Set rng = Worksheets("Risk&Issues").Range("A4") 

    i = 0: j = 1 

    txtbox_revri_idnum.Text = rng.Offset(i).Value 
    txtbox_revri_projname.Text = rng.Offset(i, j).Value: j = j + 1 
    txtbox_revri_isrefnum.Text = rng.Offset(i, j).Value: j = j + 1 
    txtbox_revri_riskrefnum.Text = rng.Offset(i, j).Value: j = j + 1 
    ' 
    ' 
    txtbox_revri_projname.SetFocus 
End Sub 

'~~> Next Button 
Private Sub button_revri_next_Click() 
    i = i + 1: j = 1 

    If i > (Sheets("Risk&Issues").Rows.Count - 4) Then 
     MsgBox "Max rows Reached" 
     Exit Sub 
    End If 

    txtbox_revri_idnum.Text = rng.Offset(i).Value 
    txtbox_revri_projname.Text = rng.Offset(i, j).Value: j = j + 1 
    txtbox_revri_isrefnum.Text = rng.Offset(i, j).Value: j = j + 1 
    txtbox_revri_riskrefnum.Text = rng.Offset(i, j).Value: j = j + 1 
    ' 
    ' 
    txtbox_revri_projname.SetFocus 
End Sub 

同樣上一個按鈕

'~~> Previous Button 
Private Sub button_revri_prev_Click() 
    i = i - 1: j = 1 

    If i < 0 Then 
     MsgBox "1st Row Reached" 
     Exit Sub 
    End If 

    txtbox_revri_idnum.Text = rng.Offset(i).Value 
    txtbox_revri_projname.Text = rng.Offset(i, j).Value: j = j + 1 
    txtbox_revri_isrefnum.Text = rng.Offset(i, j).Value: j = j + 1 
    txtbox_revri_riskrefnum.Text = rng.Offset(i, j).Value: j = j + 1 
    ' 
    ' 
    txtbox_revri_projname.SetFocus 
End Sub 
+0

在實現上一個按鈕時,我假定操作符是' - '而'next'操作符是'+'。然而,在這樣做,我得到了以下錯誤消息: 運行時錯誤「1004」 應用程序定義或對象定義的錯誤 調試點的最後一行代碼:) 私人小組button_revri_prev_Click( I = I - 1:J = 1 txtbox_revri_idnum.Text = rng.Offset(ⅰ)。價值 txtbox_revri_projname.Text = rng.Offset(I,J)。價值:當J = J - 1 txtbox_revri_isrefnum.Text = RNG .Offset(I,J)。價值:當J = J - 1 txtbox_revri_riskrefnum.Text = rng.Offset(I,J)。價值:當J = J - 1 – user1584022 2012-08-08 11:15:14

+0

這是一個例子:)我已經更新上面的代碼REF改變這些變化。 – 2012-08-08 11:19:30

+0

非常感謝你,能否讓我知道我應該對我的代碼做出什麼改變,然後我再試一次。 – user1584022 2012-08-08 11:22:11

相關問題