2015-11-22 1 views
0

Может ли кто-нибудь помочь мне получить мою форму пользователя для отправки в эту таблицу из таблицы cal?Возникли проблемы с использованием конструктора и ввода кода VBA

Private Sub cmdbutton_submitform_Click() 
    Dim emptyRow As Long 

    'Make Sheet2 active 
    Sheet2.Activate 
    'Determine emptyRow 
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 
    'Transfer information 
    Cells(emptyRow, 1).Value = txtbox_number.Value 
    Cells(emptyRow, 2).Value = txtbox_rank.Value 
    Cells(emptyRow, 3).Value = txtbox_Name.Value 
    Cells(emptyRow, 4).Value = txtbox_height.Value 
    Cells(emptyRow, 5).Value = txtbox_weight.Value 
    Cells(emptyRow, 6).Value = txtbox_right_rm.Value 
    Cells(emptyRow, 7).Value = txtbox_left_rm.Value 
End Sub 

VBA_code-submit

table_i_want_to_load_info

+0

Я могу скрин шоты моей УВЫ Я использую –

+0

Private Sub cmdbutton_submitform_Click() Dim emptyRow As Long 'Сделать Sheet2 активного Sheet2.Activate ' Определить emptyRow emptyRow = WorksheetFunction.CountA (Диапазон ("A:")) + 1 «Передача информации Клетки (emptyRow, 1) .Value = txtbox_number.Value Клетки (emptyRow, 2) .Value = txtbox_rank.Value Клетки (emptyRow, 3) .Value = tx tbox_Name.Value Клетки (emptyRow, 4) .Value = txtbox_height.Value Клетки (emptyRow, 5) .Value = txtbox_weight.Value Клетки (emptyRow, 6) .Value = txtbox_right_rm.Value Клетки (emptyRow, 7). Значение = txtbox_left_rm.Value End Sub –

+0

В чем проблема? Вы получаете сообщение об ошибке или ...? – vacip

ответ

0

Использование Worksheet.Activate method вероятно теряет вид ссылки родительский, который необходим, чтобы правильно получить данные в текстовое поле из пользовательской формы. В пределах этого Private Sub вы должны иметь возможность ссылаться на Sheet2 на Рабочий лист .CodeName property и использовать Me для ссылки на форму пользователя в качестве родителя текстовых полей.

Private Sub cmdbutton_submitform_Click() 
    Dim emptyRow As Long 

    'Reference Sheet2 by CodeName as the parent worksheet of the .Cells 
    With Sheet2 
     'Determine emptyRow 
     emptyRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 
     'Transfer information 
     .Cells(emptyRow, 1).Value = Me.txtbox_number.Value 
     .Cells(emptyRow, 2).Value = Me.txtbox_rank.Value 
     .Cells(emptyRow, 3).Value = Me.txtbox_Name.Value 
     .Cells(emptyRow, 4).Value = Me.txtbox_height.Value 
     .Cells(emptyRow, 5).Value = Me.txtbox_weight.Value 
     .Cells(emptyRow, 6).Value = Me.txtbox_right_rm.Value 
     .Cells(emptyRow, 7).Value = Me.txtbox_left_rm.Value 
    End With 
End Sub 

Я нашел, что это немного странно, что вы идентифицирующую таблицу с рабочим листом .CodeName property, а не Worksheet .Name property. Я включил пару ссылок, чтобы убедиться, что вы правильно используете соглашения об именах. В любом случае, я использую With ... End With statement, чтобы избежать повторного повторного определения родительского листа.

+0

Спасибо, что это мега –

1

Я думаю, что вы путаетесь с простыми именами и названиями листов (см. this). Попробуйте

Private Sub cmdbutton_submitform_Click() 
    Dim emptyRow As Long 

    With Worksheets("Sheet2") 
     'Determine emptyRow 
     emptyRow = WorksheetFunction.CountA(.Range("A:A")) + 1 
     'Transfer information 
     .Cells(emptyRow, 1).Value = txtbox_number.Value 
     .Cells(emptyRow, 2).Value = txtbox_rank.Value 
     .Cells(emptyRow, 3).Value = txtbox_Name.Value 
     .Cells(emptyRow, 4).Value = txtbox_height.Value 
     .Cells(emptyRow, 5).Value = txtbox_weight.Value 
     .Cells(emptyRow, 6).Value = txtbox_right_rm.Value 
     .Cells(emptyRow, 7).Value = txtbox_left_rm.Value 
    End With 
End Sub 
+0

Удивительное понимание спасибо ... им учиться каждый день. Никогда не касался vba до сегодняшнего дня –

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