所以在表格上有这个按钮,我不能让3个单元格上的数据(例如:C1,D1,E1)向下移动1行,而不会移动整个工作表。
如何在插入后使值降低,以便我可以将Row1始终打开以获取新值?
这是命令按钮上的代码,我可以在其上嵌入解决方案,还是必须在其他地方执行此操作?
Private Sub CommandButtonAddDes_Click()
Dim emptyRow As Long
'Activate sheet
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("C:C")) + 1
'Transfer info
Cells(emptyRow, 3).Value = Des
Cells(emptyRow, 4).Value = ComboBox.Value
Cells(emptyRow, 5).Value = TextBox1.Value
End Sub
答案 0 :(得分:1)
您希望确保要更新的单元格自动向下移动。您可以在背后的工作表代码上执行更改事件,如下所示:
Sub Worksheet_Change(ByVal Target As Range)
'Checks if the column being changed is C - E
If Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Then
'Checks if the row being changed is row 2
If Target.Row = 2 Then
'Inserts a new row and pushes what is in C2:E2 down one row
Range("C2:E2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End If
End Sub
此代码将放在后面的工作表代码中。因此,您必须右键单击您拥有此数据的工作表,然后单击视图代码(或只需双击工作表)
将代码放在那里将告诉Excel观察该表的更改,然后代码检查它是否发生在这3个单元格之一(C2:E2
)
答案 1 :(得分:0)
C1 , D1 和 E1 中的数据只是:
gsub("+00", "", test, fixed = TRUE)
# [1] "2018-01-02 06:40:00" "2018-01-02 06:50:00" "2018-01-02 07:00:00"
这会压下三个单元而不是整行。
修改#1:强>
将此事件宏放在工作表代码区域中:
Range("C1:E1").Insert Shift:=xlDown
在 C1 中通过 E1 输入所有3个值后,这些值将自动下推。
答案 2 :(得分:0)
已修改:更改了" D"的lat列索引到" E"并从" 3"开始行索引到" 2"
也许你是在这之后
Private Sub CommandButtonAddDes_Click()
With Sheet1
With .Range("C2:E" & .Cells(.Rows.Count, "C").End(xlUp).Row)
.Offset(1).Value = .Value
.Resize(1) = Array(Des, ComboBox.Value, TextBox1.Value)
End With
End With
End Sub
是否需要插入不同的行""你只需改变行索引。
答案 3 :(得分:0)
替换您的用户表单上的代码。确保您的输入框名称正确,即ComboBox1,TextBox1等。我不明白“Des”是什么。如果你在第2行需要它,那么只需将1更改为2s。
Private Sub CommandButton1_Click()
With Sheets("Sheet1")
.Range("C1:E1").Insert Shift:=xlDown
.Range("C1").Value = Des.Value
.Range("D1").Value = ComboBox.Value
.Range("E1").Value = TextBox1.Value
End With
End Sub