Изпълнение на процедури - кои редове да се изтрият

Безплатни 20 урока
регистрирай се и научи

Ако сте вече потребител - Регистриран съм
Видео

Тест за преминаване към следващия урок

 
За да се запише една инструкция на два реда, първият ред трябва да завърши със знак:
"_"
"&"
"#"

Въпроси и отговори

  • Как да изтрием редовете, ако предварително не знаем колко са с формули?

    Ана Йонкова:

    В урока предварително знаем, че 2 реда трябва да се изтрият, но ако това не е ясно не е ли по-добре след като открием първата клетка с формула- без да правим Offset направо да зададем ActiveCell.Resize(1,1).EntireRow.Delete

    След като изтрием този ред правим нова проверка, намираме друга формула - изтриваме и нейния ред и така докато се изтрият всички редове с формули.

    Може ли активната клетка да не е в началото на реда за да го изтрием?

    Димитринка Вълкова:

    Здравейте, Ана. Много добър въпрос! Разбира се, че проверката може да се направи и за останалите редове, да се изтрият, ако съдържат формула.
    Може активната клетка да не е в началото на реда. Ето една идея:
    например проверявате дали в активната клетка е въведена формула и ако има формула се изтрива целия ред:
    If ActiveCell.HasFormula = True Then ActiveCell.EntireRow.Delete

    Обърнете внимание Resize в случая е излишен.
    Надявам се, че съм помогнала. 
    Ако имате въпроси, пишете ми.
    Ана Йонкова:

    Благодаря, за отговора!

    Диян Милев:

    не ми работи макроса, защото не ми приема процедурата from(име на другия макрос). Защо се получава така?

    Диян Милев:

    Има ли значение положенията на макросите в модулите?

    Димитринка Вълкова:

    Здравейте, Диян. Ако правилно съм разбрала, имате процедура Sub from(), която не се приема (изпълнява) от друг макрос. Обърнете внимание from е дума от синтаксиса на VBA - това са служебни думи, които не може да използвате като име на процедурата (макроса). По всяка вероятност това е причината. Променете името, например: Sub from_drug_macros. Ако проблемът не се реши, изпратете картинка, за да намерим решение.

    Отговарям на втория Ви въпрос: Ако имате пред вид последователността на записването на макросите и в кой модул са записани - няма значение. Макросите или процедурите могат да се изпълняват от различни модули. Много важно условие да не се дублират имената на процедурите, които записвате в едни модул.

    Надявам се, че успях да отговоря на въпросите.

    Диян Милев:

    :) сега ми се получи. Да, трябва да са еднакви имената на самият макрос и името на описанието в новият макрос с който го извикваме. Благодаря Ви!