Excel VBA:使用文本框中的新内容更新单元格

时间:2012-08-08 13:30:59

标签: excel-vba row insert-update vba excel

我有一长串数据分成单元格。每个单元格填充一个文本框,我有20个文本框(假设我有20个单元格)。

以下代码是我填充每个文本框的方式......

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_projname.SetFocus

在表单上,​​我有一个“更新”按钮,按下时按下每个文本框中的新内容更新单元格(在工作表内)。 “更新”按钮的代码位于......

之下
Private Sub button_revri_update_Click()

ActiveCell.Value = txtbox_revri_projname.Value
ActiveCell.Offset(0, 1) = txtbox_revri_isrefnum.Value
ActiveCell.Offset(0, 2) = txtbox_revri_riskrefnum.Value
...
End Sub

当我查看工作表时,我期望看到的是对每个填充文本框的单元格的更新。然而,我实际得到的是从我碰巧在单元格上按鼠标的地方插入的新行。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您的代码在活动单元格中添加了一个新行(“我碰巧按下鼠标的任何地方”)因为您使用了ActiveCell。而是尝试类似的事情:

Private Sub button_revri_update_Click()
Dim FirstRowCell as Range

Set FirstRowCell = ActiveSheet.Range("B1")
With FirstRowCell
   .Value = txtbox_revri_projname.Value
   .Offset(0, 1) = txtbox_revri_isrefnum.Value
   .Offset(0, 2) = txtbox_revri_riskrefnum.Value
End With
...
End Sub

答案 1 :(得分:0)

当您按上一个问题中显示的“下一个”时,i的值已设置。基于该问题,您可以使用此

Private Sub button_revri_update_Click()
    j = 1

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