如何将值添加到最后一行和右边?
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
我一直在处理包含 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