Как добавить значения в последний ряд и справа? - PullRequest
0 голосов
/ 23 февраля 2020

Я работал над таблицей, содержащей таблицу. Я сделал код с полем ввода, который добавляет новые данные в мою таблицу в столбце B и C. Мне интересно, как, кроме того, я могу добавить данные в третий столбец, которые увеличивают значение на 3 на основе столбца C. Что бы я ни ввел в столбец 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

, спасибо

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Пожалуйста, попробуйте этот код.

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

Обратите внимание, что подпрограммы и функции по умолчанию Publi c. Это когда они Личные , что они особенные.

Если вторая 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
0 голосов
/ 23 февраля 2020

Если я правильно понял, что вам нужно, проверьте следующий код (добавьте после существующего кода):

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 в вашем примере. .

...