Обектът Range има десетки свойства. Можете да пишете VBA програми без прекъсване през следващите 12 месеца и никога да не ги използвате всички. Тук получавате кратък преглед на някои от най-често използваните свойства на Excel VBA Range. За пълни подробности се консултирайте със системата за помощ във VBE. (Вижте тези допълнителни ресурси за помощ с Excel VBA .)
Някои свойства на Excel VBA Range са свойства само за четене, което означава, че вашият код може да разглежда техните стойности, но не може да ги промени („Вижте, но не докосвайте“). Например всеки обект на Excel VBA Range има свойство Address, което съдържа адреса на диапазона. Можете да получите достъп до това свойство само за четене, но не можете да го промените – което е напълно логично, когато мислите за него.
Между другото, примерите, които следват, обикновено са твърдения, а не завършени процедури. Ако искате да опитате някое от тях (а трябва), създайте подпроцедура, за да го направите. Също така, много от тези VBA изрази работят правилно само ако работен лист е активният лист.
Excel VBA: Свойството на стойността
Свойството Value представлява стойността, съдържаща се в клетка. Това е свойство за четене и запис, така че вашият VBA код може или да чете, или да промени стойността.
Следното изявление показва поле за съобщение, което показва стойността в клетка A1 на Sheet1:
MsgBox Worksheets("Sheet1").Обхват("A1").Стойност
Разбираемо е, че можете да четете свойството Value само за едноклетъчен обект Range. Например следното изявление генерира грешка:
MsgBox Worksheets("Sheet1").Обхват("A1:C3").Стойност
Можете обаче да промените свойството Value за диапазон от всякакъв размер. Следното изявление въвежда числото 123 във всяка клетка в диапазон:
Работни листове("Лист1").Обхват("A1:C3").Стойност = 123
Стойността е свойството по подразбиране за обект Excel VBA Range. С други думи, ако пропуснете свойство за диапазон, Excel използва неговото свойство Value. Следните изрази въвеждат стойност от 75 в клетка A1 на активния работен лист:
Диапазон ("A1"). Стойност = 75
Обхват("A1") = 75
Excel VBA: Свойството Text
Свойството Text връща низ, който представлява текста, както е показан в клетка - форматираната стойност. Свойството Text е само за четене. Да предположим, че клетка A1 съдържа стойността 12.3 и е форматирана да показва два знака след десетичната запетая и знак за долар ($12.30). Следното изявление показва поле за съобщение, съдържащо $12,30:
MsgBox Worksheets("Sheet1").Range("A1").Text
Но следващият израз показва поле за съобщение, съдържащо 12.3:
MsgBox Worksheets("Sheet1").Обхват("A1").Стойност
Ако клетката съдържа формула, свойството Text връща резултата от формулата. Ако клетка съдържа текст, свойството Text и свойството Value винаги връщат едно и също нещо, тъй като текстът (за разлика от числото) не може да бъде форматиран за показване по различен начин.
Excel VBA: Свойството Count
Свойството Count връща броя на клетките в диапазон. Той брои всички клетки, а не само непразните клетки. Count е свойство само за четене, точно както бихте очаквали. Следното изявление осъществява достъп до свойството Count на диапазон и показва резултата (9) в поле за съобщение:
MsgBox Range("A1:C3"). Брой
Excel VBA: Свойствата на колона и ред
Свойството Column връща номера на колоната на диапазон от една клетка. Неговият помощник, свойството Row, връща номера на реда на диапазон от една клетка. И двете са свойства само за четене. Например, следното изявление показва 6, защото клетка F3 е в шестата колона:
MsgBox Sheets("Sheet1").Обхват("F3").Колона
Следващият израз показва 3, защото клетка F3 е на третия ред:
MsgBox Sheets("Sheet1").Range("F3").Row
Ако обектът на Excel VBA Range се състои от повече от една клетка, свойството Column връща номера на колоната на първата колона в диапазона, а свойството Row връща номера на реда на първия ред в диапазона.
Не бъркайте свойствата колона и ред със свойствата колони и редове. Свойствата Column и Row връщат една стойност. Свойствата Columns и Rows, от друга страна, връщат обект Range. Каква разлика прави "s".
Excel VBA: Свойството Адрес
Address, свойство само за четене, показва адреса на клетката за обект Range като абсолютна препратка (знак за долар преди буквата на колоната и преди номера на реда). Следното изявление показва полето за съобщения, показано по-долу:
Диапазон на MsgBox(Клетки(1, 1), Клетки(5, 5)). Адрес
Това поле за съобщение показва свойството Address на диапазон 5 на 5.
Excel VBA: Свойството HasFormula
Свойството HasFormula (което е само за четене) връща True, ако диапазонът от една клетка съдържа формула. Връща False, ако клетката съдържа нещо различно от формула (или е празна). Ако диапазонът се състои от повече от една клетка, VBA връща True само ако всички клетки в диапазона съдържат формула или False, ако всички клетки в диапазона нямат формула. Свойството връща Null, ако диапазонът съдържа смес от формули и неформули. Null е нещо като ничия земя: Отговорът не е нито вярно, нито невярно и всяка клетка в диапазона може или не може да има формула.
Трябва да внимавате, когато работите със свойства, които могат да върнат Null. По-конкретно, единственият тип данни, който може да се справи с Null, е Variant.
Например, приемете, че клетка A1 съдържа стойност, а клетка A2 съдържа формула. Следните изрази генерират грешка, тъй като диапазонът не се състои от всички формули или всички неформули:
Dim FormulaTest като булев
FormulaTest = Range("A1:A2").Има формула
Булевият тип данни може да обработва само True или False. Null кара Excel да се оплаква и да показва съобщение за грешка. За да коригирате този тип ситуация, най-доброто нещо, което трябва да направите, е да се уверите, че променливата FormulaTest е декларирана като Variant, а не като Boolean. Следващият пример използва удобната функция TypeName на VBA (заедно с конструкция If-Then-Else), за да определи типа данни на променливата FormulaTest. Ако диапазонът има смесица от формули и неформули, полето за съобщение показва Смесено! В противен случай показва True или False .
Подформули за проверка ()
Dim FormulaTest като вариант
FormulaTest = Range("A1:A2").Има формула
Ако TypeName(FormulaTest) = "Null" Тогава
MsgBox "Смесено!"
иначе
MsgBox FormulaTest
Край, ако
Край под
Excel VBA: Свойството на шрифта
Свойството може да върне обект. Свойството Font на обект Excel VBA Range е друг пример за тази концепция в действие. Свойството Font връща обект Font.
Обектът Font, както може да очаквате, има много достъпни свойства. За да промените някакъв аспект на шрифта на диапазона, първо трябва да получите достъп до обекта Font на диапазона и след това да манипулирате свойствата на този обект. Това може да е объркващо, но може би този пример ще помогне.
Следващият израз използва свойството Font на обекта Range, за да върне обект Font. Тогава свойството Bold на обекта Font е настроено на True. На обикновен английски, това изявление прави клетката да се показва с удебелен шрифт:
Диапазон("A1").Font.Bold = Вярно
Истината е, че всъщност не е нужно да знаете, че работите със специален обект Font, който се съдържа в обект Excel VBA Range. Докато използвате правилния синтаксис, той работи добре. Често записването на вашите действия с макрорекордера ви казва всичко, което трябва да знаете за правилния синтаксис.
Excel VBA: Вътрешната собственост
Ето още един пример за свойство, което връща обект. Свойството Interior на обект Range връща обект Interior (странно име, но така се нарича). Този тип препратка към обект работи по същия начин като свойството Font.
Например, следният израз променя свойството Color на обекта Interior, съдържащ се в обекта Range:
Диапазон("A1").Интериор.Цвят = 8421504
С други думи, това твърдение променя фона на клетката в средно сив. Какво е това? Не знаехте, че 8421504 е средно сиво? За някои прозрения в прекрасния свят на цветовете на Excel, вижте близката странична лента „Бърз и мръсен цветен грунд“.
Excel VBA: Свойството на формулата
Свойството Formula представлява формулата в клетка. Това е свойство за четене и запис, така че можете да получите достъп до него, за да видите формулата в клетка или да вмъкнете формула в клетка. Например следното изявление въвежда формула SUM в клетка A13:
Диапазон("A13").Формула = "=SUM(A1:A12)"
Забележете, че формулата е текстов низ и е затворена в кавички. Също така забележете, че формулата започва със знак за равенство, както правят всички формули.
Ако самата формула съдържа кавички, нещата стават малко трудни. Кажете, че искате да вмъкнете тази формула с помощта на VBA:
=SUM(A1:A12)&" Stores"
Тази формула показва стойност, последвана от думата Магазини . За да направите тази формула приемлива, трябва да замените всеки знак в кавички във формулата с две кавички. В противен случай VBA се обърква и твърди, че има синтактична грешка (защото има!). И така, ето изявление, което въвежда формула, която съдържа кавички:
Диапазон("A13").Формула = "=SUM(A1:A12)&"" Магазини"""
Между другото, можете да получите достъп до свойството Formula на клетката, дори ако клетката няма формула. Ако клетка няма формула, свойството Formula връща същото като свойството Value.
Ако трябва да знаете дали дадена клетка има формула, използвайте свойството HasFormula.
Имайте предвид, че VBA „говори“ американски английски. Това означава, че за да поставите формула в клетка, трябва да използвате синтаксиса на САЩ. Ако използвате неанглийска версия на Excel, прочетете за свойството FormulaLocal в системата за помощ.
Excel VBA: Свойството NumberFormat
Свойството NumberFormat представлява числовия формат (изразен като текстов низ) на обекта Range. Това е свойство за четене и запис, така че вашият VBA код може или да проучи числовия формат, или да го промени. Следното изявление променя числовия формат на колона A на процент с два десетични знака:
Columns("A:A").NumberFormat = "0.00%"
Следвайте тези стъпки, за да видите списък с други формати на числа (още по-добре, включете рекордера на макроси, докато правите това):
Активирайте работен лист.
Натиснете Ctrl+1 за достъп до диалоговия прозорец Форматиране на клетки.
Щракнете върху раздела Номер.
Изберете категорията по избор, за да видите и приложите някои допълнителни низове за числови формат.