在不移动行的情况下按下值

时间:2018-02-07 20:27:12

标签: excel vba excel-vba

所以在表格上有这个按钮,我不能让3个单元格上的数据(例如:C1,D1,E1)向下移动1行,而不会移动整个工作表。

Table Example

如何在插入后使值降低,以便我可以将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

4 个答案:

答案 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