如何将值添加到最后一行和右边?

How to add values to the last row and to the right?

我一直在处理包含 table 的电子表格。我用输入框编写了一个代码,将新数据添加到 B 列和 C 列中的 table。我想知道另外,我如何可以将数据添加到第三列,根据 C 列将值增加 3 . 无论我在 C 列中输入什么,我都希望 D 列中的相应单元格是原来的三倍。

    Public Sub InsertCargoNumber3()
Dim aaa As String, ar As Long
aaa = InputBox("Enter cargo number")

If aaa = "" Then
    Exit Sub
Else
    ar = Range("B" & Rows.Count).End(xlUp).Row + 1
    Range("b" & ar).Value = aaa
End If

Dim bbb As String, br As Long
bbb = InputBox("Enter Laycan Start Date")

If bbb = "" Then
    Exit Sub
Else
    br = Range("B" & Rows.Count).End(xlUp).Row
    Range("c" & br).Value = bbb

End Sub

假设我通过输入框在 C 列中输入 23.02.20,那么在 D 列中它应该显示为 25.02.20

提前,谢谢

如果我正确理解了您的需要,请测试下一个代码(添加在您现有的代码之后):

br = Range("B" & Rows.Count).End(xlUp).Row
Range("C" & br).Value = bbb
With Range("D" & br)
    .Value = DateValue(bbb) +3
    .NumberFormat = "dd/mm/yy"
End With

它在 D:D 列中添加了 3 天,而不是您示例中的 2 天...

请尝试此代码。

Public Sub InsertCargoNumber3()

    Dim aaa As String
    Dim ar As Long


    aaa = InputBox("Enter cargo number")
    If Len(aaa) Then
        ar = Cells(Rows.Count, "B").End(xlUp).Row + 1
        Cells(ar, "B").Value = aaa

        aaa = InputBox("Enter Laycan Start Date")
        If Len(aaa) Then
            Cells(ar, "C").Value = aaa
            Cells(ar, "D").Value = Val(aaa) * 3
        End If
    End If
End Sub

请注意,Subs 和 Functions 默认为 Public。只有当它们是 Private 时,它们才是特别的。

如果第二个 aaa 是一个日期,将该数字乘以 3 一定会得到一个很远的未来日期,但是如果您希望将该数字格式化为日期,我建议将最后一行代码交换为上面的程序要换成这个。

With Cells(ar, "D")
    .Value = Val(aaa) * 3
    .NumberFormat = "dd-mm-yyyy"      ' or whatever format you prefer
End With

坦率地说,我没有考虑过您打算在那里输入日期 - 可能是因为下面的乘法。如果我这样做了,我会以不同的方式构建第二个输入,也许像这样。

' aaa has a value from previous use
do While Len(aaa)
    aaa = InputBox("Enter Laycan Start Date")
    If IsDate(aaa) Then
        Cells(ar, "C").Value = DateSerial(aaa)
        Cells(ar, "D").Value = DateSerial(aaa) * 3
        Range(Cells(ar, "C"), Cells(ar, "D")).Numberformat = "dd-mm-yyyy"
        Exit do
    End If
Loop