2015-06-03 2 views
-1

Сэр, у меня проблема в excell. У меня есть файл в excell, состоящий из нескольких листов. В листе «Студент» есть список имен студентов в диапазоне ячеек (b2: b21), а также список их объекта в диапазоне (d2: d5).Копирование данных на другой выбранный лист с помощью кнопки команды

В листе «Форма» есть форма для ввода результата их теста в диапазоне (D7: M7), ячейка для имени студента (D2) и ячейка для их объекта (D4). (D2) и (D4) является выпадающим списком и источником из листа «Студент».

Я также создал несколько предметов листов

Я хочу, чтобы скопировать данные из «Формы» диапазон листа (D7: М7), чтобы «Математика» лист или «целители» лист или т.п. диапазон (С4: L23), зависящих на то, что выбрано в ячейке (D2) и (D4). Я также добавляю кнопку управления ActiveX control «Отправить». Итак, когда я нажал кнопку «Отправить», данные в линейке листов «Форма» (D7: M7), скопированы на другой лист в диапазоне (C4: L23). Мне нужен код vba для программирования команды «Отправить», чтобы сделать процесс выполненным.

ответ

0


Я предполагаю, что это является «форма» лист выглядеть
Form worksheet
и «субъект» рабочий лист выглядит следующим образом:
subject worksheet
когда кнопка мыши, результат копируется в соответствующий субъект листа:
Result copied
Ниже приведен исходный код для кнопки:

Option Explicit 
Dim ResultWorkbook As Workbook 
Dim FormWorksheet As Worksheet 
Dim SubjectWorksheet As Worksheet 
Dim ListRange As Range 

Sub CopyResult() 

Dim LastRow As Long 
Dim CurrentRow As Long 

Set ResultWorkbook = Workbooks(ActiveWorkbook.Name) 
Set FormWorksheet = ResultWorkbook.Sheets("Form") 
Set SubjectWorksheet = ResultWorkbook.Sheets(FormWorksheet.Range("D4").Value) 
Set ListRange = FormWorksheet.Range("D7:M7") 

Application.ScreenUpdating = False 

LastRow = SubjectWorksheet.Cells(Rows.Count, "B").End(xlUp).Row 

For CurrentRow = 4 To LastRow 
    If SubjectWorksheet.Range("B" & CurrentRow).Value = FormWorksheet.Range("D2").Value Then 
     SubjectWorksheet.Range("C" & CurrentRow & ":L" & CurrentRow).Value = ListRange.Value 
    End If 
Next 

End Sub 
Смежные вопросы