Копирование значений ячеек с одного листа на другой при входе в систему - PullRequest
0 голосов
/ 01 января 2019

У меня есть пользовательская форма «AMForm», чтобы студенты могли выбирать свои классы в университете.

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

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

Каждый студент входит в систему с помощью пользовательской формы «Форма входа».Я хочу автоматически заполнить их идентификатор пользователя, имя и фамилию на «листе AMchoice», который можно выбрать при входе в систему.Их информация хранится в листе «Информация об ученике».

Как я могу кодировать, что при входе эта информация (первые 3 столбца) извлекается из листа «Информация об ученике» и копируется в первые 3 столбца »AMChoice "лист?

Я делаю это для нескольких пользователей, поэтому, когда следующий пользователь регистрирует свои выборы, я хочу, чтобы информация / выборы следующего пользователя были заполнены в следующей пустой строке.Я предполагаю, что мне пришлось бы использовать какую-то функцию HLookup / Vlookup, но я не уверен?

Мой код для входа.

Option Explicit
Private Sub btnLogin_Click()

Dim RowNo As Long
Dim ID As String, PW As String
Dim WS As Worksheet
Dim aCell As Range

On Error GoTo ErrorHandler

'Ensure User ID and password fields are filled
If Len(Trim(txtUser)) = 0 Then
    txtUser.SetFocus
    MsgBox "Error. UserID cannot be empty."
    Exit Sub
End If

If Len(Trim(txtPass)) = 0 Then
    txtPass.SetFocus
    MsgBox "Error. Password cannot be empty."
    Exit Sub
End If

'Set Range Location
Application.ScreenUpdating = False

Set WS = Worksheets("StudentInformation")
ID = LCase(Me.txtUser)

Set aCell = WS.Columns(1).Find(What:=ID, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

'If match found
    If Not aCell Is Nothing Then
        RowNo = aCell.Row
        If Me.txtPass = aCell.Offset(, 1) Then
            MsgBox "Login Successful."
            AMForm.Show
            Unload Me
        Else
            MsgBox "Incorrect UserID or Password. Please try again.", vbOKOnly
        End If
 'If not found
    Else
        MsgBox "Incorrect UserID or Password. Please try again.", vbOKOnly
    End If

CleanExit:
    Set WS = Nothing
    Application.ScreenUpdating = True
    Exit Sub
ErrorHandler:
    MsgBox Err.Description
    Resume CleanExit
End Sub

1 Ответ

0 голосов
/ 02 января 2019

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

Dim xrow As long, ID as long
Dim ws1 As Worksheet, ws2 As Worksheet
Dim arrStudent() as Variant
Set ws1 = Worksheets("StudentInformation")
Set ws2 = Worksheets("AMChoices")
xrow = 1

'once student logs in

'your code to set ID equal to the studentID used to login
 xrow = xrow + 1
'Run the code above each time a student logs in. 
'This is to keep the data on AMChoices from overlapping.

Application.ScreenUpdating = false
ws1.Activate

for x = 1 To ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
    if ID = Cells(x, 1).value Then
        ws1.Cells(x, 1).value = arrStudent[0]
        ws1.Cells(x, 2).value = arrStudent[1]
        ws1.Cells(x, 3).value = arrStudent[2]
        ws1.Cells(x, 4).value = arrStudent[3]
       'ws1.Cells(x, n).value = arrStudent[n-1]

       'do this n times for each column of info you want to copy
    else:
    end if
next x  

ws2.activate
for xcol = 1 to n
ws2.Cells(xrow, xcol).value = arrStudent[xcol - 1]
next xcol   

Application.ScreenUpdating = true   

Также это не проверено, поэтому могут быть ошибки.

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