2016-01-25 3 views
-4

У меня есть пользовательская форма, которая появляется каждый раз, когда информация помещается в столбец H. Вы вводите некоторую информацию, и она заполняет лист 2 этой информацией. У меня уже есть счет, чтобы считать последнюю строку и все такое. После того, как вы нажмете enter, excel выберет ячейку под любой ячейкой в ​​столбце H, в которую вы указали информацию. Мне нужно захватить информацию в ячейках столбцов A и D в той же строке, в которую вы указали информацию в столбце H, и поместить ее вместе с информацией пользовательской формы в строке на листе 2. Изображение: enter image description hereКопирование данных из ячейки в выбранной строке

Любая помощь будет замечательной!

Спасибо!

Редактировать: Добавлен код из отзыва.

Добавлены глобальные переменные.

Public Range1 As Range Public Range2 As Range

и код:

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Column = "8" Then Set Range1 = Me.Cells(Target.Row, 1) Set Range2 = Me.Cells(Target.Row, 4) 'lot Set Range3 = Me.Cells(Target.Row, 8) 'qty used Reconcile.Show Else Exit Sub End If End Sub

Excel не распознает Me.Cells. В нем говорится: «Метод или элемент данных не найден»

+2

Пожалуйста, покажите нам код, который вы написали до сих пор, или, по крайней мере, ваши исследования, это не кодирование. – SilentRevolution

+1

Да, это действительно не имеет большого смысла, если мы не можем видеть, что вы пытаетесь сделать. – justkrys

ответ

0

Помещение, которое вы уже подключили к Worksheet_Change() -event, чтобы показать форму пользователя (что, я думаю, вы делаете, поскольку оно показывает «всякий раз, когда кто-то вводит информацию в столбец H), вы может хранить значения переменных следующим образом:

Создать отдельный модуль для глобальных переменных:

Public Range1 as Range 
Public Range2 as Range 

Далее, в рабочем листе, в котором вы вводите значения в столбце H:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 8 
     Set Range1 = Me.Cells(Target.Row, 1) 
     Set Range2 = Me.Cells(Target.Row, 2) 
     UserForm1.Show 'Do the rest from there 
    End If 
End Sub 

Теперь, если остальная часть вашего скрипта выполнена из пользовательской формы или где-либо еще, у вас все равно будет доступ ко всей информации в указанных ячейках через Range1 и Range2.

+0

Но почему глобальные переменные, вы не можете просто вызвать форму, затем в той же самой процедуре собрать данные из столбцов a, d и h на основе целевой строки и вставить ее в лист 2? Насколько я могу вывести OP, не требуется, чтобы данные использовались в пользовательской форме. – SilentRevolution

+0

@SilentRevolution Вы могли бы, но так как OP спрашивает, как «захватить информацию в ячейках столбца A и D» (которая может быть любым свойством ячейки), моим первоначальным советом будет «Вставить в переменную диапазона». Однако, как вы уже прокомментировали OP, его вопрос очень расплывчатый, поэтому в зависимости от точного сценария могут быть более элегантные решения. –

+0

Да, очень сложно обмениваться информацией со всеми вами, поскольку это для моей работы. Данные из столбцов не используются в пользовательской форме. Я не думал о создании глобальных переменных. Это должно работать очень хорошо! Спасибо! –

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