2015-08-27 3 views
0

У меня уже есть этот код, который вставляется в следующую пустую строку. Он отлично работает, но теперь у меня есть новый проект VBA, что я хотел бы сделать то же самое, но столбцы вместо строкВставить в следующую пустую колонку

Текущий код:

intLast = shtAlpha.Cells(Rows.Count, "C").End(xlUp) 
intNext = intLast + 5 - (intLast + 1) Mod 5 
Set rngDest = shtAlpha.Cells(intNext, "C").Resize(5, 3) 

Я попробовал это, но я получил Compile метод Error или элемент данных не найден, он выдвигает на первый план

.Cells 

/

intLast = Omega.Cells(Columns.Count, "1").End(xlRight).Column 
intNext = intLast + 5 - (intLast + 5) Mod 5 
Set rngDest = Omega.Cells(intNext, "A").Resize(30000, 3) 
+1

'Omega.Cells (1, Columns.Count) .END (xltoLeft) .Column' будет последним столбец занимали в строке 1 –

+1

AFAIK' Клетка() 'требует два целых чисел , не может использовать альфа-символы. Таким образом, вам понадобится 'shtAlpha.Cells (Rows.Count, 3) .End (xlUp)'. Или, если вы * * * хотите использовать буквы, измените его на 'shtAlpha.Cells (Rows.Count, столбцы (« C »). Column). – BruceWayne

+0

«1» не является числом. Это текстовая строка, содержащая символ ASCII, который соответствует визуальному изображению числа 1. 1 - это число. «1» - текстовая строка. – Kaz

ответ

1

Чтобы получить последний столбец в строке 1 с чем-нибудь в этом вы должны делать

intLast = Omega.Cells(1,Omega.Columns.Count).End(xlToLeft).Column 
intNext = intLast + 5 - (intLast + 5) Mod 5 
Set rngDest = Omega.Cells(1,intNext).Resize(30000, 3) 

Просьба внести изменения по одному:

Cells принимает два параметра. Первый указывает, что строка вторая указывает на столбец. Вы хотите начать с последней колонки первой строки. Таким образом, первый параметр должен быть 1. Второе должно быть количество столбцов на вашем листе.

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

.End приведет вас к границе области вы находитесь. Так как вы находитесь в последней ячейке в первой строке вы на ультраправой листа. Итак, у вас есть tomove на слева, чтобы найти последний столбец со значениями в нем. следовательно .End(xlToLeft)

Примечаниеdocumentation говорит нам о том, что параметр должен быть один из these значений.

Теперь для вашего сообщения об ошибке. Вы можете обратиться к this handy VBA error list за дополнительной информацией о том, что может вызвать вашу ошибку. Я рекомендую искать номер ошибки, если он указан в предупреждении об ошибке.

Похоже, ваша ошибка вызвана тем, что Omega не тот тип. VBA сообщает вам, что вы пытаетесь получить доступ к члену, который называется Cells, но он не может найти его в объекте.Я предлагаю добавить Omega на часы и посмотреть на его элементы при возникновении ошибки. С небольшой отладкой вы сможете найти источник проблемы!

Надеется, что это помогает :)

1

Функция Range() принимает только ссылки на ячейки как текстовые строки, например. Range("A1").

Функция Cells() принимает только числовые строки/столбцы, например. Cells(1, 1).

В этом случае вам нужно изменить

intLast = shtAlpha.Cells(Rows.Count, "C").End(xlUp) 

в

intLast = shtAlpha.Cells(Rows.Count, 3).End(xlUp) 
+0

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

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