Защо не излиза списъкът с характеристиките

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

<

p>Защо понякога като напиша точка, не ми излиза списъкът с характеристиките. Пробвах го няколко пъти - понякога излиза, понякога - не. Даже в един и същи файл, но в различни модули.

Причина за това би могло да е неправилното изписване на името на обекта. То може да се види или копира от свойство (Name). Всички имена на обекти могат да се видят от списъка под заглавната лента Properties.

Това е едната причина. От друга страна не винаги компилаторът успява да разпознае обекта и съответно да изведе този автоматичен списък.

Благодаря за бързия отговор.

Свалих пак файла m1v10_start и направих всичко като в урока. Не ми се появява списъкът когато в макроса CopyFormula вмъкна Sheets("Sheet1") в командата With Range("D3:G9").Font  и изтрия за проба Font:

With Sheets("Sheet1").Range("D3:G9").

Дали нещо не ги изписвам както трябва или просто програмата не го разпознава?


 

Ако напишете целия фрагмент можем да преценим по-лесно какъв е проблемът. Така написаната команда според мен се разбира по следния начин: "Със зона D3:G9 на лист Sheet1 от Sheets". На мен ми звучи незавършено. Очаквам да се поясни какво да се направи с тази зона. 


Първоначално вариантът е така и той работи (ако изтиря Font и после искам да  го въведа отново, след като напиша точката се появява списъкът):


With Range("D3:G9").Font

        .Name =
"Cambria"



         .Size = 14



End With

След това искам да кажа укажа, че този Range("D3:G9") е в Sheet1. Затова го вмъквам Sheets("Sheet1") преди Range("D3:G9") така:


 With Sheets("Sheet1").Range("D3:g9").

.Name = "Cambria"

         .Size = 14

End With



И тогава не се пявява списъкът.




Здравейте, Весела. Сигурна съм, че вече сама сте открили причината. Точно така в блок-оператор With не е зададен Font и затова не се показва автоматично този списък. Целта на упражненията в този модул е да "четете" инструкциите, записани с Macro Recorder и да ги редактирате. Отначало може да Ви се струва дори досадно повтарянето на тези инструкции, които показвам. Но този начин помага да разбирате инструкциите, т.е. синтаксиса на VBA. А в следващите модули подробно разглеждам инструментите в редактора на VBA, включително и техники за използване на автоматичния списък и разбира се и други още по-интересни неща. Успех!

Всъщност списъкът се появява в With, но когато се добавят Sheets("Sheet1") вече трябва да се изпише, но също работи.


Благодаря и на двете за отделеното време! Важното ми беше да знам, че не греша в изписването :).   Отдавна чаках този курс и затова съм толкова насотятелна да ги разбера нещата още от началото :)

Весела, продължавайте все така настоятелно и упорито! А аз съм насреща, всеки път когато Ви трябва помощ :-)

Здравейте, имам проблем с редактирането на кода. След като направя редакцията на кода ми изписва грешка и не мога да разбера защо.
Моля вижте грешката. Опитах няколко пъти като започвах отначало,но грешката е една и съща.

Изпращам пак print screen, за да се види целият ред с кода.

Здравейте Цветелина,

Проблемът при редактирането е, че липсва интервал след Copy
Ето какво трябва да запишете:

Sheets("Лист1").Range("A3").Copy Sheets("Лист3").Range("C3:M15").

Благодаря за отговора. Надявам се по-нататък в курса да се говори за синтаксиса,правилата за изписване. До тук споменахте правила за главните букви, латиница, кавички, но явно трябва още. Иначе курсът е доста разбираем  и достъпен. Обяснявате много добре.

Здравейте,

Редактирам кода за CopyFormula точно както е описано в лекцията:

но като резултат всеки път получавам тази празна таблица:

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

Имах в предвид кода за ConvertFormula ....

Здравей Георги. Зависи какво копираш. На изображението не се вижда диапазона, който копираш. В процедурата ConvertFormula копирам диапазон на Sheet1, в който има стойности. Провери следното: 1. Дали диапазонът, който искаш да копираш е този, който си дефинирал. 2. Сигурен ли си, че използваш Paste Special Value? Надявам се тези насоки да ти помогнат. Пиши ми, ако копирането продължава да не се получава.

Намерих си грешката - резултата се възпроизвежда в sheet 2, а това с празната таблица е в sheet1. Но искам да попитам друго. Как разбираме кои точно команди от кода са излишни, защото ако кода е по-дълъг не можем непрекъснато на принципа проба-грешка да маркирам като коментари различни части от кода и да пускам макроса непрекъснато. Това би ми отнело много време. И още един въпрос - има ли някаква клавишна комбинация (и каква е тя) която премахва автоматично привежда кода в следния вид: Sheets("Sheet1").Range("A3").Copy Sheets("Sheet1").Range("D3:G9") т.е. премахва думата select/selection, защото забелязах, че в урока лекторката го направи за секунди това премахване и кода придоби вида: Sheets("Sheet1").Range("A3").Copy Sheets("Sheet1").Range("D3:G9")

Това за излишните команди е въпрос на практика. Целта на тези уроци е да разбираш, да "четеш" кода, който се генерира записва с MacroRecorder. Както и да се редактира кода, да се премахват излишните инструкции. В уроците на курса разглеждам синтаксиса на VBA и ще се научиш как да пишеш инструкции, нали това е целта на курса. А преподавателката ще ти покаже и други интересни и полезни трикове :-). Само трябва да следваш уроците!

За макрос ConvertFormula, за да не се появява празната таблица в sheet1 трябва да се посочи в кой sheet да бъде рамката With Sheets("Sheet2").Range("J3:M9").Borders. На видео урока не става много ясно, но във файл final макросът е изписан правилно.


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

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