При натиснат Shift и двукратно кликване на страната на избраната клетка в посоката, в която искаме да се маркира.
Ако само двукратно кликнем на някоя от страните в тази посока ще се установи курсора в края на областта.
Това е ефектът на селектиране (маркиране) с клавиш Shift: избирате първата клетка, а за да изберете последната от групата последователни клетки използвате клавишната комбинация Shift+[ляв бутон на мишката ].
Да и така може, но когато е голяма областта и не виждаме последната клетка от групата е удобно да кликнем двукратно върху страната на избраната клетка в посоката,в която искаме да маркираме до края на областта.
Така е, когато работим с големи диапазони, Вашият начин е по-удобен!
При мен не се удебелява външната рамка, а само рамката на една клетка, въпреки че процедурата е същата като вашата.
Цветелина, проверете диапазона, за който задавате външната рамка. Предполагам, че сте задали референция само са тази клетка, в която се получава външната рамка.
Диапазонът е като при Вас - "Selection", но тъй като това са отделни инструкции, не разпознава кое е "Selection". Ще направя цялото упражнение отначало.
Повторението не е илишно.
Здравейте, Трябва да се вмъкне макроса Select_Table преди блок оператора With, тогава поставя рамка на цялата таблица.
Когато търсим последна непразна клетка в колона, операторът на VBA е - Range(Selection, Selection.End(xlDown)). А как стои въпросът със селекция на последна непразна клетка в ред, има ли xlRight? В случая с метода, който предлага Райна, какви ще са VBA изразите /има ли Selection.End.Right.Doubleclick?/. И на края да допълня малко за ClearContents и Delete. ClearContents според мен е по-силно изтриващ от Delete, защото освен съдържанието на клетките изтрива и оцветяването, ако има такова. В такъв смисъл, той е Delete+ още нещо. :)
Здравейте, Петър. Най-лесният начин е като запишете макрос като използвате последователно клавиш End и клавишите-стрелки, за да видите съответните инструкции във VBA.
ClearContents и Delete са две различни команди, както във Excel, а така също и във VBA. ClearContents съответства на клавиш Delete - Excel. С него се изтрива това, което е въведено в избраната клетка или диапазон.Командата Delete се изпълнява в Excel от менюто Home --> Cells --> Delete, за да изтрие клетки или цели редове/колони. Във VBA съотвeтната команда (method) е Clear. Ето защо тази команда изтрива съдържанието и формата, т.е. "всичко"!
За селектирането - чисто клавиатурно, но е свързано с удобство при работа с клавиатурата. Работя с Офис 2007. При мен придвижването и селектирането НЕ е с End-клавиша, а с Ctrl-клавиша + стрелките за движение. В комбинация с Shift-а маркирам. При моята стара версия клавишът End е за режим и работи само за селектиране.в комбинация с Shift. Не работи за преместване до следващата зона в таблицата. По-удобно е с Ctrl - може и с една ръка да се правят комбинациите. Мисля, че и в най-новите версии все още работи. Поне досега не съм сядала на компютър с последната версия на MSOffice, където да не работят дори DOS-овските клавишни комбинации. MS поддържат съвместимост с най-ранните версии на програмите в пакета си. Както и AutoDesk, проверено до версията им 2012.
Здравейте, Ирина, има разлика между последователност от клавиши (End, клавиш-стрелка) и клавишна комбинация (Ctrl + клавиш-стрелка). Така селектирането става и в двата случая с клавиш Shift. Аз използвам последователността Shift + End, клавиш-стрелка, просто навик.
Благодаря, така написано ми стана по-ясно. И в моята версия на Ексел работи. Въпрос на навик, но винаги е добре човек да знае и други начини.
Здравейте, при запис на макроса Select_CurrentRegion клавишната комбинация Ctrl+Shift+8 не ми маркира таблицата. Показва се съобщението - No cells were found. Каква може да бъде причината за това?
Проверете дали е избрана клетка от диапазона, който искате да маркирате. Много вероятно е, това съобщение да се показва, защото сте избрали празна клетка и няма как да се определи диапазона със стойности за маркиране.
Благодаря, този път се получи:)
Как да накараме ексел да маркира последната празна клетка, като се съобразява с последната клетка със стойност в съседната колона. Примерно А има информация до А10 и искаме в Б да се маркират всички клетки и от Б1 до Б10. Благодаря предварително
Здравей, може да го направиш посредством Conditional formatting.
На снимка 1 позиция 1 и 2 е примера, който ти споменаваш във въпроса си.
Идеята е щом в клекта А1 (A2,3,....10) има информация, то в B1 (B2,3,....10) може да няма нищо записано, НО тя да се оцветя. Съответно добавайки, неще в следващата клетка A11 (снимка 2 позиция 1), това автоматично да се отрази на клетка B11 и тя да се оцвети (снимка 2 позциия 2)
Ето в няколко стъпки как може да бъде постигнато това.
Селектирам цялата колона B, кликвам горе на B (снимка 3 позциия 1), отивам на в раздела Home (снимка 3 позиция 2) и кликвам на Conditional Formatting (снимка 3 позиция 3) и от падащото меню избирам New Rule (снимка 4 позиция 1).
Отваря се прозорец New Formatting Rule (снимка 4 позиция 1), селектираме раздела Use a formula to determine which cells to format (снимка 4 позиция 2), в полето записваме следната формула =$А1>0 с тази формула задаваме условието за форматиране на колона B, a именно ако в An клетката има стойност, ТО ми форматирай клетката В с някакъв цвят.След това кликваме на бутона Format (снимка 4 позиция 3) за да изберем цвета в който ще се оцветяват клетките, отваряни се прозореца Формат Cells (снимка 4 позиция 4), след което отивам в раздела Fill (снимка 4 позиция 5) и избираме цвета в който да се оцвети (снимка 4 позиция 6) клетката, избираме ОК (снимка 4 позиция 7) за да запазим промените по форматирането и ОК (снимка 4 позиция 8) за да запазим промените по създаденото условие.
Резултатът е на снимка 5.
Надявам се да съм бил полезен с отговора.
Благодаря много за изчерпателния отговор, имам още един въпрос, как да задам една формула да се копира до последна празна клетка в Б например, ако А има стойност до А50 например. Това се опитвам да направя с един макрос, но съм задала стойност до 10 000 и все трябва да трия излишните формули. Надявам се, че е ясно, какво точно питам :) и отново сърдечно благодаря за бързата реакция! Поздрави, Валентина
Здравей,
Ако данните ти са форматирани като Table (Ctr+T), следва при въвеждане на всеки следващ ред в клетка A, да се попълва и форулата записана в клетка B.
На снимка 1 позиция 1 съм направил таблица въвел съм стойност в клетка A7 (снимка 1 позиция 2), в клетка B имам формула (снимка 1 позиция 3), тя веднага се е записала, в клетки C7, D7 (снимка 1 позиция 4) имам стойнсоти който трябва да въведа ръчно.
А по отношение на VBA -а, не знам докъде си минала през курса, но смятам че ако преминеш през целия това което ти показах по-горе с таблицата мисля че ще можеш да го напишеш и във VBA код.
Малкият триъгълник в долния десен ъгъл на таблицата ни позволява да добавяме(или премахваме) редове или колони, според необходимото.
Важно е да отметнем прозорчето на функцията Total Row (позиция 2 на втората картина). Под таблицата ще се появи нов ред Total Row, а при клик в клетка Prod1 ще се покаже падащо меню с опции, от които можем да изберем това, което ни е ноебходимо. Накрая правим сумиране(най-вероятно) на данните
И финалният резултат
Дано е станало ясно!
Лек ден и успехи!
Благодаря много и на двамата, само че при мен таблица не е форматирана и не е удачно да я форматирам. За VBA курса съм още в началото,т.е. до трети модул. Аз съм написала макро, в таблицата, с която работя да направи формула например сбор от две числа в С, а в А и Б имаме 1 и респективно 2, в С ще се изпише 3 като сбор от формулата, но надолу е празна колоната и всеки път числата в А и Б са различни на брой, т.е. таблицата не е статична. Та не ми е ясно как мога да накарам формулата да се разпространи до последната активна клетка спрямо А и Б. Защото в С няма никакви стойностти. Благодаря за отделеното време, за да ми отговорите! Поздрави, Валентина
Г-жо Слабакова, може ли да изпратите снимка да се види за какво точно става въпрос? Лек ден!
Може да се ползва и формулата =$D1<>"" на мястото, което е посочил г-н Кръстев в Conditional Formating.
Резултат:
Ако напишем нещо в празните клетки, те ще се запълнят автоматично с избраният от нас цвят при форматирането.
Лек ден и успехи!
Извинения, примерът , който съм дал на втората картина, не е коректен, но формулата е вярна и може да се приложи.
Дано е станало ясно!
Лек ден, успехи и още веднъж - ИЗВИНЕНИЯ!
Здравейте и много благодаря за отделеното време и енергия за отговор, ето един пример какво точно имам предвид.
Вие и двамата сте отговорили прекрасно на първоначалния ми въпрос, но аз не съм го задала правилно. Записах кратко видео какво точно имам предвид и линка е: http://aula.bg/u/Mjc4ODlxMzY3MA Линка го преписах, защото не успях да го поставя, та да обясня при вече записан макрос, който взима сбор от клетка А и Б в Ц и трябва формулата да се копира до долу, но все ден броя на стойност в клетки А и Б е различен. При мен макроса изпълнява формулата и после ръчно кликам в долния десен ъгъл на клетката, за да се разпространи до последната клетка спрямо А и Б(нали в Ц е сбор). Надявам се, че този път съм обяснила по-коректно и отново сърдечно благодаря за времето и усилията Ви! Поздрави, Валентина
Г-жо Слабакова, както разбирам, данните се променят всеки ден. Тогава да форматираме цялата колона С в този случай. Вижда се, че сме маркирали клетка С2, натискаме комбинацията Ctrl+ Shift+ стрелка надолу и цялата колона С е маркирана. Връщаме се в началото чрез плъзгача отстрани и пишем в клетка С2 показаната формула. Издърпваме надолу за да получим резултата. Когато добавим следващите стойности след края на таблицата, сборът ще се получи в колона С след като сме натиснали стрелка надясно.
Стрелка 4 показва новите стойности - за улеснение, те са с друг размер и цвят.
Дано е станало ясно.
Лек ден и успехи!
За протокола - числото 1 048 576 или 2 на степен 20, т.е. 2^20, показва броят на редовете в един лист(sheet). Броят на колоните е 16 384 или 2 на степен 14, т.е. 2^14. Броят на листата в една книга(book) е 256, т.е. 2 на степен 8 или 2^8 или броят на всички налични клетки в една книга е 2 на степен 42, т.е. 2^42 или 4 398 046 511 104. Това е Еxcel! Лек ден и успехи!
Здравейте,
Този код събира клетките от колона А и колона В в колона С до последния ред с данни в колона А. Поставя формулата от ред 2, приемайки че ред 1 е заглавен. Работи с активния лист. Разбира се, можете да го пригодите за лист с конкретно име.
Option Explicit
Sub AddFormulaToLastRow()
Dim LastRow As Long
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 'Намира номерът на последния ред с данни в колона А
ActiveSheet.Range("C2:C" & LastRow).FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub
Надявам се, че съм помогнала. Успех с макроса!
Благодаря г-жо Данаилова, имам още един въпрос, ако желая да заместя формулата в макроса от формула със сбор с формула за конкатенация, би трябвало само да променя знака + на &, правилно ли разсъждавам? Отново благодаря за отделеното време и помощта!
Благодаря на г-н Петров и на инж. Кръстев! :)
Да, разсъждавате правилно - ако заместите знака + с & ще комбинирате знаците на клетките от колони А и В. Формулата в например клетка C2 ще бъде =A2&B2.
Благодаря Ви много г-жо Данаилова за отделеното време и помощ! :)
Здравейте, от наученото до момемта съм останала с впечатление, че на характеристиките се присвояват различни стойности (числа, текст, вярно/невярно) с оператора за присвояване. Но при характеристиката BorderAround в урока е записана запетая и Xlthick. Моля за малко разяснения. Благодаря предварително!
BorderAround е method (команда) във VBA. А методите имат аргументи, които се отделят със запетая. Обърнете внимание, BorderAround не е включен в блок-оператора With ... End With, където се задават характеристики за обекта Selection. В следващите уроци ще научите повече за командите (methods) за обектите във VBA
Благодаря!
В случая Sub Format_Border() не се изпълнява. Не дава и да има грешка.
Обърнете внимание, процедурата се изпълнява, но само за активната, избраната клетка B2, инструкцията With Selection.Borders. За да се изпълни за цялата таблица, най-напред трябва да маркирате цялата таблица или най-напред да се изпълни процедурата Sub Select_Table и след това Sub Format_Border.