Всъщност два въпроса имам, вторият не е по материала, за което се извинявам.
1.Тук виждаме декларация на променлива с оператора Dim. В предишните уроци, често се използваха променливи i и j, за които нямаше декларации от вида Dim i As Int. И въпросът ми е - в кои случаи типа на променливите задължително се декларира чрез Dim Var As ..., тук Var е променлива, която декларираме, и в кои случаи може да се пропусне.
Здравей, относно първия въпрос Лектора би дал най правилния отговор :)
Благодаря, лаптопът е HP pavilion sg6. Поставих въпроса, ако някой има вече решение, което да е общо, за да не ходя по форуми. Интересното е, че в началото на този курс F8 си действаше директно и в някакъв момент се "развали", явно има някаква клавишна комбинация, която превключва режимите. Докато пишех това, пуснах търсене, намерих форуми - едни се оплакват, като мен, че Fn ги изнервя, други пък били го изгубили, искат да си го върнат, ... нема угодия :) Краси благодаря, ще се справя.
Промените се правят в биос, тук пускам линк към указанията, ако някой друг има подобен проблем - http://support.hp.com/us-en/document/c02035108
Здравейте,
Подробно разглеждам темата за деклариране на променливите в следващия модул4. Конкретно на Вашия въпрос, модул 3, урок 7:
Блок-оператор For each управлява обекти, а колекциите също са обекти във VBA, които трябва да се декларират (оператор Dim) за разлика от останалите променливи (i, j).
Затова променливата rng_cell се декларира като обект Range. В новите версии на Excel това не е толкова стриктно условие, но според мен е добре да се прави.
Здравейте, благодаря за отговора! Аз току що изгледах урок 2 и получих отговор, явно съм избързал с въпроса. Преди доста време за малко ползвах Visual Studio 2005 и ми беше останал спомен, че там изрично/експлицитно/ беше изискването за дефинирането на променливи.
Здравейте,
На първото изображение е таблицата върху която искам да изпълня процедурата с For Each оператора (тази от предишните уроци). На второто изображение е процедурата, която съм написала. Ако задам като Range цялата таблица, при изпълнението на условието if rng_cell.Value >= 5000 then rng_cell.Interior.ColorIndex = 11, се оцветяват и клетките, които съдържат текст. Може ли в процедурата да се включи условие, че ако формата на клетката е текст, тя да бъде пропусната?
Благодаря предварително!
Забравих да кажа, че ако условието е < 5000, тогава не се оцветява текста.
Правилно се насочвате за още една проверка, за да се оцветяват само числа. Например: If IsNumber(rng_cell.Value) And rng_cell.Value > 5000 Then ....(следва инструкцията). IsNumber проверява дали стойността в клетката е число Ако е число ще върне True, aко не е число ще върне False. Текстът в клетката за компилатора означава стойност > 5000 и затова оцветява и клетки с текст. Ето защо трябва да се допълни, да се прецизира условието с още една проверка (за Вашия пример) да оцветява само числа. Друго решение е дефинирате обекта Range, който ще оцветявате, така че да включва само числа. Надявам се идеите да Ви помогнат.
Много благодаря за отговора! :) Ще го изпробвам веднага :)
Здравейте,
Ако използвам функция IsNumber:
If IsNumber(rng_cell) And rng_cell.Value >= 5000 Then rng_cell.Interior.ColorIndex = 11
Излиза съобщение за грешка:
Compile error: Sub or Function not defined
А ако използвам фунцкия IsNumeric:
If IsNumeric(rng_cell) And rng_cell.Value >= 5000 Then rng_cell.Interior.ColorIndex = 11
Инструкцията работи без грешка. Само че все още не знам каква е разликата между двете функции и коя кога трябва да се използва.
Грешката е моя. Във VBA функцията е IsNumeric, а в Excel - IsNumber, но екселската функция не е валидна във VBA и затова в кода излиза съобщение за грешка.
Благодаря Ви, за разяснението, г-жо Вълкова. :-)
Здравейте, в тази процедура бих искала да се оцветят само цифрите (без процента), като предварително съм ги форматирала. Какъв код трябва да се изпозва?