Как да управляваме колекции (Collections) - блок-оператор For each

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

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

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

 
Блок-оператор For each се използва с колекции
Твърдението е вярно
Твърдението НЕ е вярно

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

  • Може ли въпрос?

    Peter:

    Всъщност два въпроса имам, вторият не е по материала, за което се извинявам.
    1.Тук виждаме декларация на променлива с оператора Dim. В предишните уроци, често се използваха променливи i и j, за които нямаше декларации от вида Dim i As Int. И въпросът ми е - в кои случаи типа на променливите задължително се декларира чрез Dim Var As ..., тук Var е променлива, която декларираме, и в кои случаи може да се пропусне. 

    2. Работя с лаптоп. Много досадно, функционалните клавиши се избират от комбинация клавиш Fn и функционален клавиш, в случая F8 се използва много често и трябва да си ангажирам двете ръце ... :) Вероятно има режим на клавиатурата, при който след някакво заклинание, функционалните клавиши могат да се избират директно, аз обаче не съм го открил. Някой може ли да помогне?
    Краси Кръстев:

    Здравей, относно първия въпрос Лектора би дал най правилния отговор :) 


    втория въпрос може ли да кажеш какъв е лаптопа Lenovo, Mac .. обикновено там са настройките F1 .... F12  да работят с Fn?

    Ако е Lenovo ( наскоро ползвах за извесно време една Lenovo клавиатура затова директно споделям как се реши проблема ) може да направите следното отидете с Start бутона на Windows и след това отиде на лентата за търсене и там да изпишете : Lenovo Ultraslim Plus Wireless Keyboard and Mouse  отворете го след което ще ви излезне прозорец в който може да дадете отметка за това F1- F12 да са със стандартни си функции.

    Ако е друг вид лаптопа или пишете тук за да помогнем или пък директно отидете на сайта на производителя на лаптопа и изпишете като ключови думи :Switching Function key to standart ( или пък F1 F12 to standart )

    няма как да няма тема в която се пояснява как става това.


    Peter:

    Благодаря, лаптопът е HP pavilion sg6. Поставих въпроса, ако някой има вече решение, което да е общо, за да не ходя по форуми. Интересното е, че в началото на този курс F8 си действаше директно и в някакъв момент се "развали", явно има някаква клавишна комбинация, която превключва режимите. Докато пишех това, пуснах търсене, намерих форуми - едни се оплакват, като мен, че Fn ги изнервя, други пък били го изгубили, искат да си го върнат, ... нема угодия :) Краси благодаря, ще се справя.


    Peter:

    Промените се правят в биос, тук пускам линк към указанията, ако някой друг има подобен проблем - http://support.hp.com/us-en/document/c02035108 

    Аз ще пробвам по-късно :)
    Димитринка:

    Здравейте,

    Подробно разглеждам темата за деклариране на променливите в следващия модул4. Конкретно на Вашия въпрос, модул 3, урок 7:
    Блок-оператор For each управлява обекти, а колекциите също са обекти във VBA, които трябва да се декларират (оператор Dim) за разлика от останалите променливи (i, j).
    Затова променливата rng_cell се декларира като обект Range. В новите версии на Excel това не е толкова стриктно условие, но според мен е добре да се прави. 

    Peter:

    Здравейте, благодаря за отговора! Аз току що изгледах урок 2 и получих отговор, явно съм избързал с въпроса. Преди доста време за малко ползвах Visual Studio 2005 и ми беше останал спомен, че там изрично/експлицитно/ беше изискването за дефинирането на променливи. 

  • Може ли да се използва For Each - Next оператор за таблици съдържащи числа и текст

    Надежда Попниколова:

    Здравейте,

    На първото изображение е таблицата върху която искам да изпълня процедурата с 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 и затова в кода излиза съобщение за грешка.

    Надежда Попниколова:

    Благодаря Ви, за разяснението, г-жо Вълкова. :-)

    Десислава Петрова Дженкова:

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