Защо има разлика в изпълнението?

Microsoft Excel Електронни таблици Microsoft 365 Excel VBA Програмиране VBA за Excel

В началото на видеото макроса, и по-точно последният ред на края има една кавичка, а при мен две кавички и без втората макроса не се изпълнява, ето примера:

'изтрива редовете с формули If Cells(row_nu, 1) <> "Ñðåäíî" Then Exit Sub Range(Cells(row_nu - 1, 1), Cells(row_nu, col_nu)).clearcontent

Т.е. преди .clearcontent имам две кавички, а на видеото е само една и там макроса работи без проблем, да не би да се дължи на разлика в типа на ексел, моя е от 2007. Благодаря Ви!

Валентина, единичната кавичка или апостроф означава коментар по принцип е достатъчна само една, но може да има и повече. Но по-важното е, че компилаторът прави разлика между единична и двойна кавичка. Когато в началото на реда се постави единична кавичка, целият ред (инструкция) се оцветява в зелено, т.е. коментар и този ред не се изпълнява. Версията на ексел няма значение. Проверете внимателно какви кавички използвате. Надявам се, че успях да помогна. Ако имате още въпроси, пишете!

Здравейте, може ли да попитам как да селектирам втория ред от една таблица, чиийто първи вече съм селектирала с Range(Selection, Selection.End(xlToRight)).Select

Selection.Offset(1, 0).Select 'Селектира един ред под вече селектирания. Но, ако трябва да се селектират идвата реда, то тогава: Range(Selection, Selection.End(xlToRight).Offset(1, 0)).Select или Range(Selection.Offset(1, 0), Selection.End(xlToRight)).Select

Сърдечно благодаря!

Здравейте, искам след като съм направила формулата за сума на последния ред в първата колона, да копирам формулата до последната колона в таблицата. Създала съм променлива за брой колони, но някъде бъркам. Ето и скрипта: Range("A1").End(xlDown).Activate.Copy .Range(ActiveCell, column_nu - 1).Paste

В инструкцията има 2 грешки. 1. Range("A1").End(xlDown).Activate.Copy Една инструкция изпълнява само едно нещо - команда (method) или характеристика (property). Във Вашата инструкция има 2 команди (methods) - Activate i Copy. Трябва да запишете 2 инструкции.

  1. Втората грешка е в синтаксиса на Copy. Синтаксисът на команда Copy изисква аргумент къде ще се копира и затова команда Paste e излишна. Аргументът се отделя с интервал. Също така погрешно е дефиниран диапазона, в който трябва да се копира формулата.

Правилните инструкции: Range("A1").End(xlDown).Select (по-добре е от Activate, защото имате 1 клетка) ActiveCell.Copy Range(Cells(ActiveCell.Row,2), Cells(ActiveCell.Row, column_nu))

Обърнете внимание, обект Range се дефинира с референциите на 2 клетки (Cells), където първият аргумент е индекс на реда, а вторият - на колоната. За да определя индекса на реда, използвам характеристиката Row ActiveCell.Row.

В този и следващите уроци подробно обяснявам как се дефинира обект Range. Съветът ми е да изгледате още веднъж урока. И разбира се пишете, ако имате въпроси.

Весели празници!


Вашият отговор

Научи компютърните програми онлайн от топ експертите на България
Регистрацията в АУЛА ви дава:
  • 20 безплатни урока
  • Трикове и тънкости за софтуера
  • Отговори на вашите въпроси
  • Регистрация