【问题标题】:Update ActiveRow from textbox excel vba从文本框 excel vba 更新 ActiveRow
【发布时间】:2018-02-18 23:04:19
【问题描述】:

请提供一些帮助 - 尽量保持简单

我有一个用户窗体,它根据 ComboBox 中的选择更新文本框。我希望能够更改这些填充的框,然后使用更新命令,更改工作表中的值,然后清除表单

我已经能够创建添加数据的用户窗体,但我很难让 VBA 从控制框中选择活动单元格和活动行...????

一旦我可以将 VBA 放入正确的 AvtiveCell,我就可以根据需要使用偏移量和更改/添加


Private Sub ComboBox1_Change()
    With Me
        .TextBox1.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 2)
        .TextBox2.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 3)
        .TextBox3.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 4)
        .TextBox4.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 5)
        .TextBox5.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 6)
        .TextBox6.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 7)
        .TextBox7.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 8)
        .TextBox8.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 9)
        .TextBox9.Value = Sheet1.Cells(.ComboBox1.ListIndex + 2, 10)
    End With
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub EditAddButton_Click()
    EditAdd
End Sub

Private Sub UserForm_Initialize()
    TextBox1.SetFocus
End Sub

【问题讨论】:

  • 你能粘贴你当前的用户表单代码吗?我们需要看看你已经走了多远。
  • 嗨,克里斯,代码如下

标签: excel vba


【解决方案1】:

好的,你已经完成了自动填充。现在您需要将代码添加到您的 EditAdd 单击子。大概你想用用户表单中的内容替换工作表上的单元格值。

到目前为止,您尝试过什么?我会简单地尝试扭转分配!例如,在那个 sub 中,做这样的事情:

Private Sub EditAddButton_Click()
    Dim ComplaintNum as Integer
    ComplaintNum = ComboBox1.ListIndex + 2
    With Sheet1
        .cells(ComplaintNum, 2) = TextBox1.Value
        ' etc down the list
    End With
End Sub

我还没有测试过这个 - 但试一试并尝试一下。你还需要处理添加新行,但我不会为你写这个:)

【讨论】:

  • 谢谢克里斯,会试试看,这是我用来插入新行的。有什么改进吗? Private Sub CommandButton2_Click() Dim ws As Worksheet: Set ws = Sheet1 ws.Activate Range("A1").Select Selection.End(xlDown).Offset(1, 0).Select ActiveCell.Offset(0, 1) = DateReceivedBox .Value ActiveCell.Offset(0, 2) = ViaBox.Value
  • ActiveCell.Offset(0, 3) = FromTextbox.Value ActiveCell.Offset(0, 4) = Location1Box.Value ActiveCell.Offset(0, 5) = Location2Box.Value ActiveCell.Offset(0, 6) = RegNumberBox.Value ActiveCell.Offset(0, 7) = VehicleMakeBox.Value ActiveCell.Offset(0, 8) = VehicleColorBox.Value ActiveCell.Offset(0, 9) = CommentsBox.Value ActiveCell.FormulaR1C1 = "=+R [-1]C+1" Range("A1").Select Unload Me NewComplaintForm.Show End Sub
  • 鉴于难以阅读 cmets 中的代码,我不会立即判断此插入代码是否有效 - 但如果它对您有用,那就太好了。不过,一项改进是:您几乎不需要在代码中“选择”单元格。不要选择然后使用 ActiveCell。直接引用单元格即可。
  • 例如,不要说 Cells(1,1).Select / ActiveCell.Value="Hello" - 只需说 Cells(1,1).value="Hello"。
猜你喜欢
  • 2019-11-17
  • 2019-09-13
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
相关资源
最近更新 更多