2015-11-03 3 views
0

Моя цель состояла в том, чтобы документировать процесс сборки, записывая теги инвентаризации, а затем отслеживать контрольный список, который проверяет готовый продукт. Поскольку я только в Фазе 1 (запись инвентарных тегов), мне предстоит пройти долгий путь.Передача данных из UserForm на рабочий лист

Что я пытаюсь сделать с помощью UserForm, это использовать ручной сканер, сканирующий штрих-коды (теги инвентаря) и заполняя их основной таблицей, когда я нажимаю кнопку «Отправить». Однако приведенный ниже код порождает эту ошибку:

Run Time Error '424' object required

Что я делаю неправильно?

Private Sub cmdSubmit_Click() 
    Dim eRow As Long 

     eRow = Database.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

     Cells(eRow, 1).Value = txtDeviceID.Text 
     Cells(eRow, 2).Value = txtUserName.Text 
     Cells(eRow, 3).Value = txtUserNumber.Text 
     Cells(eRow, 4).Value = txtCloneDevice.Text 
     Cells(eRow, 5).Value = txtCartAssembly.Text 
     Cells(eRow, 6).Value = txtPC.Text 
     Cells(eRow, 7).Value = txtMonitor.Text 
     Cells(eRow, 8).Value = txtUPS.Text 
     Cells(eRow, 9).Value = txtHub.Text 
     Cells(eRow, 10).Value = txtKeyboard.Text 
     Cells(eRow, 11).Value = txtMouse.Text 
     Cells(eRow, 12).Value = txtPrinter.Text 
     Cells(eRow, 13).Value = txtWebcam.Text 
     Cells(eRow, 14).Value = txtScanner.Text 
     Cells(eRow, 15).Value = txtRFID.Text 
+0

Я предполагаю, что «База данных» является переменной рабочего листа. Вам нужно поставить это перед каждой из ваших «... ячеек ...», как это «Database.Cells ...» –

+0

База данных предназначена для названия листа (так что я думаю, что это тоже переменная). Внесите изменения и посмотрим, как это работает. – CimpleSypher

+0

Hey Pnuts, Большое спасибо. Мне нужна твоя помощь и Нейральгроув. – CimpleSypher

ответ

0

Два решения (как предположим, «База данных» является имя листа в вашей книге)

  1. Вы не можете ссылаться на листы по имени, как это. Вы либо должны указать свое фоновое имя «База данных» (в VBA IDE-> Project Explorer-> Your Project-> Объекты Microsoft Excel-> Найти лист с именем Database, щелкните правой кнопкой мыши, Properties-> измените свойство «Name» в «База данных»). Затем вы увидите «База данных» в скобках в качестве имени основного листа в объектах Microsoft Excel в Project Explorer, и вы можете ссылаться на него в своем коде.

  2. Другой простой способ сделать это - добавить это в свой код.

    Dim Database as Worksheet 
    Set Database = Worksheets("Database") 
    

Затем вы можете ссылаться на него, как вы в вашем коде.

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

+0

Спасибо! Я сделаю изменения и дам вам знать, как это работает. Когда я начал, я пропустил это поле. – CimpleSypher

+0

Эй Neuralgroove, – CimpleSypher

0

Оба Pnuts & Neuralgroove ответил на вопрос, потому что у меня было несколько ошибок с моим кодом.

Как Pnuts предложил, так как эта строка кода сказал:

eRow = Database.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

Тогда последующие строки надо было прочитать:

Database.Cells(eRow, 1).Value = txtDeviceID.Text 

Вместо того, как я первоначально написал:

Cells(eRow, 1).Value = txtDeviceID.Text 

Мне также нужно было изменить свойство имени объекта на базу данных, как описывает Neuralgroove.

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