Защо първата задача не се изпълнява в 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 разглеждам в следващите модули и уроци и се надявам скоро да намерите сам отговор на въпроса си. Но въпреки това, ако имате въпроси или нещо не е ясно, моля пишете ме. Ще се радвам да бъда полезна!
Благодаря за отговора!
Здравейте, пиша във връзка с последната под задача за поставяне на рамка. Как само с тази инструкция (вж.: следващия параграф) успявате при изпълнение на макроса да постигнете All Borders за селекцията?
With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous
.Weight = xlThin
End With
При мен не се поучава, само хоризонталните линии се запълват. За да постигна това, което виждаме от видеото, кодът е следния.