Как использовать мою последнюю строку как часть моего диапазона? - PullRequest
0 голосов
/ 03 июля 2019

Я в настоящее время стажер на лето, новенький для VBA (только что забрал его 6/29/19), и я пытаюсь создать Отчет о старении заказов для наглядности в моей компании. Проблема заключается в том, что независимо от того, сколько вариантов кода я пробую (я приложу несколько примеров), я либо сталкиваюсь с ошибкой несоответствия типов, либо код выполняется без проблем, но не вводит вычисленные значения в ячейки в этот диапазон. Я не спрашиваю, решили ли ресурсы, которые я уже пробовал, проблему, и я готов признать, что это, скорее всего, довольно фундаментальная ошибка. В StackOverflow я не нашел ни одной публикации, которая бы решала мою конкретную проблему. Я просто очень новичок в этом и вообще программирую (я только что выбрал Python несколько месяцев назад для Data Science). Может ли кто-нибудь помочь мне с указанием (а не решением) правильного решения? Это похоже на очень простое решение, и я бью себя, потому что до сих пор не могу понять.

  • Я попытался преобразовать значение последней строки в строку, чтобы она была совместима с диапазоном, с которым я пытаюсь его объединить, это приводит только к ошибке несоответствия типов.

  • Я пробовал метод конкатенации с этим форматом: Range ("C2" и LR), и именно здесь возникает проблема с кодом, выполняющимся, но не возвращающим значений.

  • Я попытался определить счетчик для строк, а затем распечатать его значение в ячейке за пределами моей таблицы и использовать его как часть вычисления.

  • Я пробовал цикл For Each в каждом столбце и использовал значения, введенные в поля ввода, в качестве значений, вводимых для каждой ячейки. Это сработало, но оно просто замораживало мой Excel каждый раз при запуске.

  • Я попытался использовать произвольно выбранное число, которое больше таблицы, и это сработало. Но по понятным причинам это не то решение, которое я хочу. Это просто лень и не дает никакой учебной ценности, ха-ха.

Я надеюсь, что этот фон не слишком ограничивает, и я хочу заранее поблагодарить всех за совет!

Вот текущий код, который я использую:

    Sub FillWeeknDay()

    Dim lRow As Long
    Dim LR As String
    lRow = Cells(Rows.Count, 1).End(xlUp).Row
    LR = lRow

    Dim Week As Variant
    Week = InputBox("What week is this OOR being made in?")
    Range("C2:C" & LR).value = Week

    Dim Day As Variant
    Day = InputBox("Are you creating this report on Monday, Wednesday, or Friday?")
    Range("D2:D" & LR).value = Day

    End Sub

Ожидаемый результат состоит в том, что значения, введенные в поля ввода, будут вводиться в ячейки диапазона вплоть до последней строки в этом столбце. Фактический результат - либо вообще ничего, либо ошибка несоответствия типов, о которой я упоминал.

1 Ответ

0 голосов
/ 03 июля 2019

Для моего комментария попробуйте это (добавлены комментарии, чтобы показать, что я изменил, но вы можете удалить их в своем реальном коде):

Sub FillWeeknDay()
Dim ws as Worksheet
' Change the worksheet name below if needed. It should be the name of the sheet
' you want the code to run on/with
Set ws = ThisWorkbook.Worksheets("Sheet1")

' Good job using `Long`, because the number of rows can exceed 
' what an `Integer` can hold.  Note how I added `ws` before the Range object
' which makes sure that we're counting the `Cells()...` info on the correct page.
Dim lRow As Long 
lRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

' Change variable name, and make a String
Dim userWeek as String
userWeek = InputBox("What week is this OOR being made in?")
ws.Range("C2:C" & lRow).Value = userWeek 

Dim userDay As String
userDay = InputBox("Are you creating this report on Monday, Wednesday, or Friday?")
ws.Range("D2:D" & lRow).Value = userDay 

End Sub

Я изменил Day, потому что это зарезервированный термин в VBA. Изменено Week только для соответствия userDay «стилю» ... но, вероятно, могло сохранить Week.

Редактировать: Я также предполагаю, что этот код находится в книге, которая НЕ является Personal.xlsb. Если вы вводите это в Personal.xlsb, измените ThisWorkbook выше на ActiveWorkbook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...