2016-03-27 2 views
1

Я столкнулся с ошибкой (ошибка времени выполнения «1004»: ошибка, определяемая приложением или объектами) при попытке написать мой первый макрос Excel VBA. Я рассмотрел аналогичные вопросы о переполнении стека и других сайтах, но моя проблема кажется более простой, чем проблемы, которые возникают у других.Как извлечь столбец из ячейки (Excel, VBA)

В настоящее время я пытаюсь взять данные из двух ячеек с одного листа и записать их на другой лист. Я понимаю, что попытка найти столбец или строку ячейки, которые я ссылаюсь на ячейку или строку, не нужна, но в конечном итоге я буду использовать for-loops и заменит конкретные ссылки на ячейки переменными.

Вот две строки кода, которые у меня есть:

Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A" & Worksheets("Sheet1").Range("B2").Row).Value 
Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Range(Worksheets("Sheet1").Range("B2").Column & "1").Value 

Первая линия работает нормально. Он записывает A1 в Sheet1 в A1 в Sheet2. Вторая строка не запускается, не записывает B1 Sheet1 в B1 Sheet2, ссылается на ошибку, и я не уверен, почему.

Благодарим вас за внимание и помощь!

ответ

2

Свойство .Columns возвращает целое число, а не букву. Используйте Range.Cells property, если вы хотите определить диапазон с числовой строкой и числовым столбцом.

Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Cells(1, Range("B2").Column).Value 

Я полагаю, что для этого существует большая цель, но поскольку он сидит, это очень подробный код.

+0

Спасибо! Это сработало. – SeanM

0

ваши последние строки из вашего вопроса, что вы хотите, чтобы заполнить Лист2-A1 с Лист1-A2 и Sheet2-B1 с Лист1-B1

самый простой способ

Worksheets("Sheet2").Range("A1") = Worksheets("Sheet1").Range("A2") 
Worksheets("Sheet2").Range("B1") = Worksheets("Sheet1").Range("B1") 
0

Я новичок в VBA, как и вы. Вам не нужно знать все в VBA, чтобы эффективно использовать его. Я сделал свой первый макрос с помощью ЗАПИСИ, и он работал (но был безнадежно неэффективен).

У меня была проблема, похожая на вашу: поиск данных на другом листе. Я создал следующую функцию:

Функция GetMyNumber (C3ll) Mycol = C3ll.Column GetMyNumber = Mycol End Function

Чтобы использовать его в таблицу, просто введите формулу в некоторую клетку, как D5,

= GetMyNumber (D5)

Когда вы пересчитывать число 4 появится в ячейке D5. Если вы скопируете ячейку D5 в ячейку F3, вы увидите в F3, = GetMyNumber (F3), и вычисление вернет 6. Конечно, вы можете заполнить или переместить, аргумент будет изменен на ячейку, в которой находится формула. если вы хотите, вы можете компенсировать аргумент, относящийся к любой ячейке.

Как только вы это сделаете, вы можете вставить код, который вам подходит, и другие задачи, которые используют ваш номер столбца MyCol, чтобы извлечь номер из другого листа. Помните, что MyCol является целым числом.

Надеюсь, это поможет.

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