Как да добавяме нови инструкции в записания макрос – редактиране на макроса

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

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

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

 
Кога се добавят нови инструкции в процедурата  ?
Само в края
Само в началото
Само след коментар
Нито едно от изброените
 
За да допълня макроса с нови команди е необходимо:
Да запиша нов макрос само с новите действия и след това ги копирам в макроса, за да ги допълня
Не мога да допълвам записан макрос с нови действия
Да запиша нов макрос, в който да повторя предишните действия и включа новите команди

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

  • Къде греша?

    Юлияна Борисова:

    <

    p>Здравейте! Тествайки макроса FormatBorder, не получих очаквания резултат. Когато маркирам като коментар всички блок-оператори без последния, както е в урока, получавам като резултат очертани само вътрешни хоризонтални линии.

    Димитринка:

    Здравейте, Юлияна! Поздравления сама сте се справили! Макросите са като забавни ребуси - един малък детайл понякога може да обърка нещата, но пък става интересно. Успех!

    Юлияна Борисова:

    Благодаря ! Изключително интересен курс. Водите ни стъпка по стъпка към ново ниво на знание, което открива нови хоризонти...

    Elvira:

    Здравейте, аз имам същия проблем с външните линии, но при мен В последния блок- оператор '(xlInsideHorizontal) НЕ е маркиран като коментар и въпреки това макроса не работи правилно.Къде може да е проблема.

    Elvira:

    Ето това са изписаните инструкции Sub FormatBorder() ' ' FormatBorder Macro ' Слага рамка на таблицата '

    ' Range("J3:M9").Select ' Selection.Borders(xlDiagonalDown).LineStyle = xlNone ' Selection.Borders(xlDiagonalUp).LineStyle = xlNone ' With Selection.Borders(xlEdgeLeft) ' .LineStyle = xlContinuous ' .ColorIndex = 0 ' .TintAndShade = 0 ' .Weight = xlThin ' End With ' With Selection.Borders(xlEdgeTop) ' .LineStyle = xlContinuous ' .ColorIndex = 0 ' .TintAndShade = 0 ' .Weight = xlThin ' End With ' With Selection.Borders(xlEdgeBottom) ' .LineStyle = xlContinuous ' .ColorIndex = 0 ' .TintAndShade = 0 ' .Weight = xlThin ' End With ' With Selection.Borders(xlEdgeRight) ' .LineStyle = xlContinuous ' .ColorIndex = 0 ' .TintAndShade = 0 ' .Weight = xlThin ' End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Range("G7").Select End Sub

    Elvira:

    Здравейте, справих се с макроса.Очевидно трябва да има коментар пред '(xlInsideHorizontal) :) Бих искала да попитам защо не ми разрешава да поставя коментар по средата на реда( като го правя така ми маркира кото коментар целия ред, а не само след него) Наложи се да преместя '(xlInsideHorizontal) на нов ред и да поставя коментар само на него. Как да слагам коментари по средата на реда както е в урока?

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

    Когато използвате иконата за коментар, автоматично знакът за коментар (апостроф ' или единична кавичка се поставя в началото на инструкцията (реда). Когато трябва да се постави вътре в инструкцията, тогава трябва ръчно да въведете знака за коментар (апостроф ') пред операторите в коментар. Надявам се, че успях да отговоря на въпроса.

    Валентина Слабакова:

    Здравейте Юлияна, и аз имам същия проблем и не мога да разбера каква е грешката ми. Бихте ли споделила решението? п.п. а следвам всички стъпки, както е описано в урока Благодаря предварително

    Валентина Слабакова:

    Здравейте и аз се справих с проблема, но трябва да се сравни кода, който ние сме записали с кода на преподавателката, забелязах, че там има още два коментара, които ако са пропуснати, пречат за правилното изпълнение на макроса. Курса е страхотен и дава невероятни знания, както всички други в Аула! Благодаря, че ни предоставяте това знание!

  • Къде греша?

    Юлияна Борисова:

    <

    p>Здравейте отново! за съжаление схемите, които приложих както и втората част от въпроса не се видяха на екран и правя нов опит. Тествайки макроса FormatBorder, не получих очаквания резултат. Когато маркирам като коментар всички блок-оператори без последния, както е в урока, получавам като резултат очертани само вътрешни хоризонтални линии.

    Юлияна Борисова:

    Съжелявам! Схемите не излизат...

    Юлияна Борисова:

    Намерих си грешката. В последния блок- оператор '(xlInsideHorizontal) е маркирано като коментар.

    Zenny:

    Благодря, че сте го разгадала Юлияна! Аз доста се взирах да разбера къде е грешката и благодарение на вас открих :-)

    Емилия Славчева:

    Доста инструкции трябваше да запазя от всеки един блок оператор, за да постигна All Borders в макроса, но се получи.

  • Къде се намира иконата?

    Ана Йонкова:

    Изпращам изображение - къде е иконата с която се маркират блок- операторите като коментар?

    Димитринка:

    В редактора на VBA, лентата с икони. Ако не се вижда, трябва да се активира:
    от контекстното меню (с десен бутон на мишката върху лентата с икони) изберете Edit.

    Ана Йонкова:

    Благодаря! Намерих я.

    Илиана:

    След създаването на новия макрос в Module4 и копирането на инструкциите в Module 1 както е показано в урока , не се получава макроса в Sheet2. Работя в EXCEL2010.

  • Къде се записват макросите?

    Георги Олегов Ангелов:

    Здравейте,

    тъй като не успях на намеря мейл за връзка с лекторката ще задам въпроса си под тази тема, въпреки че не е свързан с нея. Искам да знам съществува ли някаква директория или библиотека, в която се записват абсолютно всички макроси, които създаваме в различни файлове на ексел?

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

    Георги, винаги можеш да ми пишеш и на лично съобщение. Средствата за комуникация в платформата на Аула са много функционални и предоставят различни възможности. Ето и отговора на твоя въпрос: Има такава възможност и това става, когато запишеш макросите или процедурите в Personal Macro Workbook (personal.xlsb). Подробно тази възможност разглеждам в уроците на модул 6. Надявам се, че отговорих на твоя въпрос, но ако нещо не е ясно, пиши ми.

  • Защо първата задача не се изпълнява в Sheet2, а се връща в 1?

    Любен Помаков:

    Защо след като създам макроса Select Sheet и го копирам в CopyFormula след F5 той се изпълнява в Sheet 1, а не в Sheet 2. Така става и в урока. Не мога да намеря къде греша. Този макрос би трябвало да работи и в следващ Sheet, напр. 3, но не се получава. 

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

    Здравейте Любен, Не е грешка!

    Инструкцията е Sheets("Sheet1").Range("D3:G9") = "=Randbetween(800,1700)". Това означава, че винаги ще се изпълнява за Range("D3:G9") на лист Sheet1, независимо кой е активния лист. За да работи макросът за всеки лист, т.е. да се изпълнява за всеки лист, който е активен, тогава трябва да премахнете Sheets("Sheet1") и да остане само Range("D3:G9") = "=Randbetween(800,1700)".

    Тествайте, за да видите разликата в изпълнението на макроса.

    Ако имате още въпроси, пишете!

    инж. Валентин Крумов:

    Здравейте! Нещо не разбрах. При мен се получава абсолютно същото, както при г-н Помаков. Още преди да прочета въпроса му (и отговора на г-жа Вълкова), аз също мислех, че макроса трябва да се изпълнява в листа, който работим. Иначе, просто не се сещам за практическо приложение. Наистина, след като оставих само Range("D3:G9") = "=Randbetween(800,1700)", макросът проработи и на двата листа, да дори и на нови такива, които добавих (наистина, на новите листа, не се получава форматирането). Има обаче, един интересен момент - при това положение, макросът повече не копира формулата от Sheet1!A3, а изпълнява задачата, благодарение на записа "=Randbetween(800,1700)".
    В последното се убедих, просто като изтрих формулата в Sheet1!A3, но това ни най-малко не "смути" макроса... Работя в EXCEL2010. Надявам се, в следващите уроци, да намеря отговор на задачата.

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

    Здравейте, Валентин. В инструкцията (реда) Sheets("Sheet1").Range("D3:G9") = "=Randbetween(800,1700)" пред Range("D3:G9") е включен листа Sheets("Sheet1"), където се въвежда формулата. В Excel избираме клетка, диапазон или лист, за да се изпълни команда. Във VBA е достатъчно точно да се дефинира обекта, не е необходимо да се избира, за се изпълни команда. В конкретния пример, Sheets("Sheet1").Range("D3:G9") формулата ще се въвежда винаги в Range("D3:G9") на лист Sheet1. Всеки лист има Range("D3:G9"), но когато се добави отпред Sheets("Sheet1").Range("D3:G9"), тогава формулата се копира само и единствено в диапазона Range("D3:G9"), който се намира на лист Sheet1, без значение кой е активния лист. Как се дефинират и управляват различни обекти във VBA разглеждам в следващите модули и уроци и се надявам скоро да намерите сам отговор на въпроса си. Но въпреки това, ако имате въпроси или нещо не е ясно, моля пишете ме. Ще се радвам да бъда полезна!

    инж. Валентин Крумов:

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