Переход к следующей пустой строке, чтобы заполнить ячейку из пользовательской формы - PullRequest
0 голосов
/ 31 декабря 2018

В настоящее время я создаю систему, использующую VBA, чтобы студенты могли выбирать свои занятия в университете.Для этого я создал пользовательскую форму «AMForm», в которой для каждого класса имеются смежные функциональные кнопки, чтобы они могли выбрать «да» или «нет», если они хотят записаться в класс, например «Машиностроение» с «да».Кнопки «или» нет рядом с ним.

После того, как они отправят свою форму - я хочу иметь возможность записать свой выбор в электронную таблицу «AMChoices».Эта электронная таблица содержит каждый класс в вышеуказанных заголовках, поэтому я хотел бы заполнить ячейку буквой «х», если она была выбрана, например, если выбрана кнопка «Машиностроение», она заполняет «х» под этой ячейкой.

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

Пожалуйста, смотрите ниже мой код.

Set CurrentCell = Range("B2").End(xlDown).Offset(1, 0).Select
If Me.optAMIB1 Then
Total = Total + 20
Worksheets("AMChoices").Range("CurrentCell").Value = "X"
End If

Ответы [ 2 ]

0 голосов
/ 20 августа 2019

Я предполагаю, что у вас есть столбец для серийного номера или номера ролика, несколько столбцов для имени учащихся и других, а затем столбец для каждого предмета, для которого у них есть возможность.Если это так, и вам нужно отметить под заголовком, то вы можете использовать код ниже

Dim lastRow as Long
lastRow = Sheet1.Cells( "B" & Rows.Count). End( xlUp ).Offset(1,0).Row

AMChoices.Range("A" & lastRow).Value = <Serial number or Roll number>
AMChoices.Range("B" & lastRow).Value = <Student's Name> 

if Me.optAMIB1 Then
   AMChoices.Range("<Column name of the choice>",lastRow).Value = "X"
End If

Вы можете использовать оператор with, если хотите.

0 голосов
/ 31 декабря 2018

Во-первых, нет необходимости в Select ячейке, к которой вы хотите добавить значение "X".

Во-вторых, после установки объекта диапазона CurrentCell вы можете напрямую использовать его с CurrentCell.Value2 = "X".

Попробуйте код ниже, дополнительные объяснения внутри кода:

Dim AMChoiceSht As Worksheet
Dim CurrentCell As Range
Dim LastRow As Long

' set the worksheet object
Set AMChoiceSht = ThisWorkbook.Worksheets("AMChoices")

With AMChoiceSht
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row ' find last row in column B

    Set CurrentCell = .Range("B" & LastRow + 1) ' set the range of next empty row
End With

If Me.optAMIB1 Then
    Total = Total + 20
    CurrentCell.Value2 = "X"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...