-
#2
You can check for numbers using IsNumeric.
-
#3
You can check for numbers using IsNumeric.
Thank You
I tried this and it gave me a 7 or 8. I believe 7 might be a date and 8 a string. Is there a way i can display it as Date rather 7 and String rather than 8?
Code:
Sub test()
For Each cell In Sheets("sheet1").Range("A1:A10")
MsgBox VarType(cell)
Next
End Sub
Is there a difference between VarType and Typename?
Last edited: Apr 15, 2012
-
#4
Try TypeName.
By the way to check for dates you can use IsDate.
Oh, almost forgot, if the value us text but can be recognised as a date then IsDate will return True.
The same applies for IsNumber.
-
#5
Try TypeName.
By the way to check for dates you can use IsDate.
Oh, almost forgot, if the value us text but can be recognised as a date then IsDate will return True.
The same applies for IsNumber.
Thank you.
Now that might be a problem (the value is text but can be recognised as a date then IsDate will return True)
I have some dates that look like dates but are actually strings.
I need to check to see if the value is a string/date/number etc?
If it is a String, is there a quick way to change string values to Date and vice versa?
-
#6
Is there a problem with having ‘text’ dates?
What is it you are trying to do?
-
#7
Is there a problem with having ‘text’ dates?
What is it you are trying to do?
Hi, my aim is to convert every dates that entered as text to actual dates
Any numbers that have been entered as text as numbers
Hope this makes sense. I want a vba solution to do this.
I guess i wanted to see the values which were extracted incorrectly and wanted to see the type but i guess thats not required.
-
#8
Just add 0 to all the values.
If they are text that will convert it to a number/date and if they are already number/date they won’t be changed.
You would want to avoid blank cells though as if you add 0 to a blank the result is 0.
-
#9
I think it might be something to do with text to columns ( I need it in VBA).
I have recorded via macro recorder and the it works fine however….
I am not sure about these 4 lines of the code
TextQualifier:=xlDoubleQuote, _ what is the DoubleQuote text qualifier?
ConsecutiveDelimiter:=False, _ ???
FieldInfo:=Array(1, 3), _ ???
TrailingMinusNumbers:=True ???
I have tried to read through the help but still not getting it
I am not sure how to perform this for All my data rather than just the first column. I have 8 columns of data
Last edited: Apr 15, 2012
-
#10
Add 0 to all the values using PasteSpecial>Operations add which you can do using code.
Code:
Cells(1, Columns.Count).Copy
Range("A1:H1000").PasteSpecial Operation:=xlPasteSpecialOperationAdd
EXPLANATION
This tutorial shows how to test if a cell contains text and return a specified value if the test is True or False by using Excel formulas or VBA.
This tutorial provides three Excel methods that can be applied to test if a cell contains text.
The first method uses a combination of an Excel IF and ISTEXT functions. The ISTEXT function test if the selected cell contains text. If it does then the function will return a TRUE value. The IF function is then used to return a specified value if the ISTEXT function returns a value of TRUE, which in this example is «Contains Text». Alternatively, if the ISTEXT function returns a value of FALSE, then the cell does not contain text and the IF function will return the associated value, which in this example is «No Text».
The second method uses a combination of an Excel IF and ISNUMBER functions. The ISNUMBER function test if the selected cell is a numeric value. If the cell is a numeric value, meaning that there are no text values, then the function will return a TRUE value, alternatively if the cell contains a text value, the function will return a FALSE value. The IF function is then used to return a specified value if the ISNUMBER function returns a value of FALSE, which in this example is «Contains Text». Alternatively, if the ISNUMBER function returns a value of TRUE, then the cell does not contain text and the IF function will return the associated value, which in this example is «No Text».
The third method uses a combination of an Excel IF and COUNTIF functions. The COUNTIF function uses the «*» to identify if the cell contains text. If the cell contains text the COUNTIF function will return a value of 1, alternatively it will return a value of 0. The IF function is then used to return a specified value if the COUNTIF function returns a value greater than 0, which in this example is «Contains Text». Alternatively, if the COUNTIF function returns a value of 0, then the cell does not contain text and the IF function will return the associated value, which in this example is «No Text».
This tutorial provides six VBA methods that can be applied to test if a cell contains text and return a specific value. Methods 1, 3 and 5 are applied against a single cell, whilst methods 2, 4 and 6 use a For Loop to loop through all of the relevant cells, as per the example in the image, to test each of the cells in a range and return specific values. The main difference between the examples is how the code determines is the cell contains text.
FORMULA (using ISTEXT function)
=IF(ISTEXT(value)=TRUE, value_if_true, value_if_false)
FORMULA (using ISNUMBER function)
=IF(ISNUMBER(value)=FALSE, value_if_true, value_if_false)
FORMULA (using COUNTIF function)
=IF(COUNTIF(value, «*»)>0, value_if_true, value_if_false)
ARGUMENTS
value: The value or cell that is to be tested.
value_if_true: Value to be returned if the value or cell contains text.
value_if_false: Value to be returned if the value or cell does not contains text.
Здравствуйте! |
|
LightZ Пользователь Сообщений: 1748 |
Может я что-то не правильно понял? Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Понял ошибку. Я пробовал Is Numeric. |
|
LightZ Пользователь Сообщений: 1748 |
Не за что Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
{quote}{login=LightZ}{date=09.07.2012 07:29}{thema=}{post}Debug.Print IIf(Application.IsText(Cells(1, 1).Value), «Text», «Numeric»){/post}{/quote}С этим нужно осторожнее: при пустом значении и дате, получим неверные ответы |
Ну мне для решения конкретной задачи больше всего походит первый вариант в виде: |
|
ZVI Пользователь Сообщений: 4328 |
Добрый вечер, Михаил! |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Здравствуйте все. В дополнение, и это тоже: Я сам — дурнее всякого примера! … |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Забыл еще: Я сам — дурнее всякого примера! … |
LightZ Пользователь Сообщений: 1748 |
Так я думаю вряд ли кто-то будет использовать Const x As Long = «111»: Const z As String = «abc» False True Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Богдан, вот это — неправильно: Я сам — дурнее всякого примера! … |
LightZ Пользователь Сообщений: 1748 |
Серёж, а в чём разница то? Const x As Long = «111» Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
«111» — строка |
{quote}{login=ZVI}{date=09.07.2012 09:56}{thema=}{post}Добрый вечер, Михаил! |
|
LightZ Пользователь Сообщений: 1748 |
{quote}{login=Юрий М}{date=09.07.2012 11:37}{thema=}{post}»111″ — строка Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Богдан, а тогда зачем объявлять заведомо неверно? Об этом Серж и говорит… Если «111», ту нужно и писать: As String. Если хотим числовую переменную — кавычки не нужны. Вот о чём разговор. |
> А почему к «d» и «e» такое «избранное» отношение? Михаил, это экспоненциальная запись числа. 1d3=1000, 1e2=100. ?isnumeric(«ff»),isnumeric(«&hff»),isnumeric(«&o75»),isnumeric(«&o79») |
|
Я попробовал так: хоть 234е765б + 1 хоть 123d765 + 1 =11 (+25 = 35) |
|
k61 Пользователь Сообщений: 2441 |
IsNumeric(«ЧислоИлиЦифра» & Chr(160) & «ЧислоИлиЦифра»)=True |
Если данные будут считываться только из ячеек рабочего_листа: Function ValueIsNumber(X) As Boolean Если даты или логические не считать числами — удалить vbDate или vbBoolean |
|
LightZ Пользователь Сообщений: 1748 |
{quote}{login=Юрий М}{date=10.07.2012 10:40}{thema=}{post}Богдан, а тогда зачем объявлять заведомо неверно? Об этом Серж и говорит… Если «111», ту нужно и писать: As String. Если хотим числовую переменную — кавычки не нужны. Вот о чём разговор.{/post}{/quote}Юрий, я понял. Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Если других данных не будет, то всё нормально. Весь сыр-бор разгорелся из-за того, что с проверкой типа есть подводные камни, и их желательно учитывать. |
LightZ Пользователь Сообщений: 1748 |
Загвоздочка может произойти только с пробелом или пустой ячейкой, т.к. vba считает, что пустая ячейка это число, а вот с датой проблем нет (false) Dim x As Range Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
ran Пользователь Сообщений: 7091 |
Что-то я не улавливаю. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
{quote}{login=LightZ}{date=10.07.2012 10:01}{thema=}{post}Загвоздочка может произойти только с пробелом или пустой ячейкой, т.к. vba считает, что пустая ячейка это число, а вот с датой проблем нет {/post}{/quote}Ну как же нет? |
ZVI Пользователь Сообщений: 4328 |
E — это экспоненциальная форма записи числа В окне Immediate: Если вписать в VBA-модуле, например, такую строку: |
Павел Гость |
#27 10.07.2012 22:23:57 2 Михаил С
Точка и знаки «d» и «e» могут быть частью записи числа, не поэтому ли? |
||
LightZ Пользователь Сообщений: 1748 |
RAN, воспроизведите макрос: .Value = Empty Т.е. с помощью Application.Trim(x.Value) убиваю сразу двух зайцев: пустоту и пробел Юрий, я описал про IsNumeric, а с текстом придется учитывать и дату With Cells(1, 1) Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
{quote}{login=LightZ}{date=10.07.2012 10:29}{thema=}{post}Юрий, я описал про IsNumeric, а с текстом придется учитывать и дату{/post}{/quote}Я реагировал на это: |
Михаил С. Пользователь Сообщений: 10514 |
#30 10.07.2012 23:15:44 Такой, казалось бы, простой вопрос, а столько подводных камней! |
В языке VBA есть универсальные типы данных, т.е. способные хранить как число, так и строку, дату и любой другой тип информации. Например, ячейка в таблице может содержать что угодно и изначально, программа не знает какой в ней тип данных хранится. Кроме того, в самой программе может использоваться тип данных Variant, который так же может содержать любое значение любого типа.
Чтобы определить какой тип данных в ячейке или в переменной типа Variant, можно воспользоваться несколькими способами.
Способ 1. Использовать функцию TypeName для определения типа данных
Эта функция возвращает строку с названием типа данных на английском. В качестве аргумента принимает переменную, значение ячейки.
Обратите внимание: Функция определяет только стандартные типы данных и не может определить пользовательский тип (определенный с помощью Type).
Возможные возвращаемые функцией значения:
Byte | Число типа Byte |
Integer | Целое число |
Long | Длинное целое число |
Single | Число одиночной точности с плавающей запятой |
Double | Число двойной точности с плавающей запятой |
Currency | Валюта |
Decimal | Число с плавающей запятой |
Date | Дата |
String | Строка |
Boolean | Логическое |
Error | Ошибка |
Empty | Не проинициализировано (т.е. переменная не была объявлена) |
Null | Неверные данные (в переменной нет корректных данных) |
Object | Объект (класс) |
Unknown | Тип данных не известен |
Nothing | Объект, никуда не ссылающийся |
Приведу несколько примеров по использованию TypeName.
Пример 1. Определение типа переменной.
Dim v As Integer MsgBox TypeName(v) ' Выведет: Integer
Обратите внимание: если вы используете результат TypeName в условии, т.е. проверяете, соответствует ли тип данных определенному, например, Integer, то регистр символов возвращаемого типа имеет значение. Т.е. нужно писать Integer с заглавной буквы, либо использовать приведение всех символов к одному регистру.
Пример 2. Использование TypeName в условии.
Dim v As Integer If TypeName(v) = "Integer" Then MsgBox "Yes" Else MsgBox "No" ' Yes If TypeName(v) = "integer" Then MsgBox "Yes" Else MsgBox "No" ' No If LCase(TypeName(v)) = "integer" Then MsgBox "Yes" Else MsgBox "No" ' Yes
Пример 3. Определение типа данных в ячейке.
MsgBox TypeName(Cells(1, 1).Value) ' Выведет тип данных в ячейке A1
Если функции была передана переменная массив, она вернет тип данных в массиве с добавлением скобок.
Пример 4. Определение типа массива.
Dim Arr1(10) As Integer Dim Arr2(10) MsgBox TypeName(Arr1) ' Выведет: Integer() MsgBox TypeName(Arr2) ' Выведет: Variant()
Способ 2. Проверка на возможность преобразования строки к нужному типу.
Бывает ситуация, когда значение, например, число или дата, содержится в строке. В этом случае TypeName вернет String, а не Integer или Date. Чтобы узнать, что содержится в строке, можно воспользоваться одной из функций IsNumeric, IsDate, IsObject, IsArray, IsNull, IsError.
IsNumeric | Проверяет может ли выражение быть преобразовано в число |
IsDate | Проверяет может ли выражение быть преобразовано в дату |
IsObject | Проверяет, является ли переменная объектом |
IsArray | Проверяет, является ли переменная массивом |
IsNull | Проверка на пустое значение |
IsError | Проверка выражения на ошибку |
Пример 4. Определение может ли переменная быть преобразована в число.
Dim v As String If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no (т.к. в строке нет числа) v = "120" If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes v = "120.45" If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no v = "test 120" If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no v = "120 test" If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no
К сожалению, как видим из примера, нет возможности проверить, содержится ли в строке число с плавающей точкой.
Пример 5. Определение содержит ли переменная дату (может быть преобразована в дату).
Dim firstDate, secondDate As Date Dim timeOnly, dateAndTime, noDate As String firstDate = CDate("12.05.2017") secondDate = #12/5/2017# timeOnly = "15:45" dateAndTime = "12.05.2017 15:45" noDate = "Test" If IsDate(firstDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes If IsDate(secondDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes If IsDate(timeOnly) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes If IsDate(dateAndTime) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes If IsDate(noDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no
Проверка, содержится ли число или дата в ячейке листа делается аналогично, как и с переменными.
Помимо этих способов можно конечно еще придумать и другие, например, проверку строки с данными регулярным выражением или пройти по каждому символу в цикле и проверить цифра это или нет и тому подобное. Но на мой взгляд, описанных мной способов вполне достаточно для решения повседневных задач.
Excel If Cell Contains Text
Excel If Cell Contains Text Then Formula helps you to return the output when a cell have any text or a specific text. You can check if a cell contains a some string or text and produce something in other cell. For Example you can check if a cell A1 contains text ‘example text’ and print Yes or No in Cell B1. Following are the example Formulas to check if Cell contains text then return some thing in a Cell.
If Cell Contains Text
Here are the Excel formulas to check if Cell contains specific text then return something. This will return if there is any string or any text in given Cell. We can use this simple approach to check if a cell contains text, specific text, string, any text using Excel If formula. We can use equals to operator(=) to compare the strings .
If Cell Contains Text Then TRUE
Following is the Excel formula to return True if a Cell contains Specif Text. You can check a cell if there is given string in the Cell and return True or False.
The formula will return true if it found the match, returns False of no match found.
If Cell Contains Partial Text
We can return Text If Cell Contains Partial Text. We use formula or VBA to Check Partial Text in a Cell.
Find for Case Sensitive Match:
We can check if a Cell Contains Partial Text then return something using Excel Formula. Following is a simple example to find the partial text in a given Cell. We can use if your want to make the criteria case sensitive.
- Here, Find Function returns the finding position of the given string
- Use Find function is Case Sensitive
- IsError Function check if Find Function returns Error, that means, string not found
Search for Not Case Sensitive Match:
We can use Search function to check if Cell Contains Partial Text. Search function useful if you want to make the checking criteria Not Case Sensitive.
If Range of Cells Contains Text
We can check for the strings in a range of cells. Here is the formula to find If Range of Cells Contains Text. We can use Count If Formula to check the excel if range of cells contains specific text and return Text.
- CountIf function counts the number of cells with given criteria
- We can use If function to return the required Text
- Formula displays the Text ‘Range Contains Text” if match found
- Returns “Text Not Found in the Given Range” if match not found in the specified range
If Cells Contains Text From List
Below formulas returns text If Cells Contains Text from given List. You can use based on your requirement.
VlookUp to Check If Cell Contains Text from a List:
We can use VlookUp function to match the text in the Given list of Cells. And return the corresponding values.
- Check if a List Contains Text:
=IF(ISERR(VLOOKUP(F1,A1:B21,2,FALSE)),”False:Not Contains”,”True: Text Found”) - Check if a List Contains Text and Return Corresponding Value:
=VLOOKUP(F1,A1:B21,2,FALSE) - Check if a List Contains Partial Text and Return its Value:
=VLOOKUP(“*”&F1&”*”,A1:B21,2,FALSE)
If Cell Contains Text Then Return a Value
We can return some value if cell contains some string. Here is the the the Excel formula to return a value if a Cell contains Text. You can check a cell if there is given string in the Cell and return some string or value in another column.
The formula will return true if it found the match, returns False of no match found. can
Excel if cell contains word then assign value
You can replace any word in the following formula to check if cell contains word then assign value.
Search function will check for a given word in the required cell and return it’s position. We can use If function to check if the value is greater than 0 and assign a given value (example: 1) in the cell. search function returns #Value if there is no match found in the cell, we can handle this using IFERROR function.
Count If Cell Contains Text
We can check If Cell Contains Text Then COUNT. Here is the Excel formula to Count if a Cell contains Text. You can count the number of cells containing specific text.
The formula will Sum the values in Column B if the cells of Column A contains the given text.
Count If Cell Contains Partial Text
We can count the cells based on partial match criteria. The following Excel formula Counts if a Cell contains Partial Text.
- We can use the CountIf Function to Count the Cells if they contains given String
- Wild-card operators helps to make the CountIf to check for the Partial String
- Put Your Text between two asterisk symbols (*YourText*) to make the criteria to find any where in the given Cell
- Add Asterisk symbol at end of your text (YourText*) to make the criteria to find your text beginning of given Cell
- Place Asterisk symbol at beginning of your text (*YourText) to make the criteria to find your text end of given Cell
If Cell contains text from list then return value
Here is the Excel Formula to check if cell contains text from list then return value. We can use COUNTIF and OR function to check the array of values in a Cell and return the given Value. Here is the formula to check the list in range D2:D5 and check in Cell A2 and return value in B2.
If Cell Contains Text Then SUM
Following is the Excel formula to Sum if a Cell contains Text. You can total the cell values if there is given string in the Cell. Here is the example to sum the column B values based on the values in another Column.
The formula will Sum the values in Column B if the cells of Column A contains the given text.
Sum If Cell Contains Partial Text
Use SumIfs function to Sum the cells based on partial match criteria. The following Excel formula Sums the Values if a Cell contains Partial Text.
- SUMIFS Function will Sum the Given Sum Range
- We can specify the Criteria Range, and wild-card expression to check for the Partial text
- Put Your Text between two asterisk symbols (*YourText*) to Sum the Cells if the criteria to find any where in the given Cell
- Add Asterisk symbol at end of your text (YourText*) to Sum the Cells if the criteria to find your text beginning of given Cell
- Place Asterisk symbol at beginning of your text (*YourText) to Sum the Cells if criteria to find your text end of given Cell
VBA to check if Cell Contains Text
Here is the VBA function to find If Cells Contains Text using Excel VBA Macros.
If Cell Contains Partial Text VBA
We can use VBA to check if Cell Contains Text and Return Value. Here is the simple VBA code match the partial text. Excel VBA if Cell contains partial text macros helps you to use in your procedures and functions.
MsgBox CheckIfCellContainsPartialText(Cells(2, 1), “Region 1”)
End Sub
Function CheckIfCellContainsPartialText(ByVal cell As Range, ByVal strText As String) As Boolean
If InStr(1, cell.Value, strText) > 0 Then CheckIfCellContainsPartialText = True
End Function
- CheckIfCellContainsPartialText VBA Function returns true if Cell Contains Partial Text
- inStr Function will return the Match Position in the given string
If Cell Contains Text Then VBA MsgBox
Here is the simple VBA code to display message box if cell contains text. We can use inStr Function to search for the given string. And show the required message to the user.
If InStr(1, Cells(2, 1), “Region 3”) > 0 Then blnMatch = True
If blnMatch = True Then MsgBox “Cell Contains Text”
End Sub
- inStr Function will return the Match Position in the given string
- blnMatch is the Boolean variable becomes True when match string
- You can display the message to the user if a Range Contains Text
Which function returns true if cell a1 contains text?
You can use the Excel If function and Find function to return TRUE if Cell A1 Contains Text. Here is the formula to return True.
Which function returns true if cell a1 contains text value?
You can use the Excel If function with Find function to return TRUE if a Cell A1 Contains Text Value. Below is the formula to return True based on the text value.
Share This Story, Choose Your Platform!
7 Comments
-
Meghana
December 27, 2019 at 1:42 pm — ReplyHi Sir,Thank you for the great explanation, covers everything and helps use create formulas if cell contains text values.
Many thanks! Meghana!!
-
Max
December 27, 2019 at 4:44 pm — ReplyPerfect! Very Simple and Clear explanation. Thanks!!
-
Mike Song
August 29, 2022 at 2:45 pm — ReplyI tried this exact formula and it did not work.
-
Theresa A Harding
October 18, 2022 at 9:51 pm — Reply -
Marko
November 3, 2022 at 9:21 pm — ReplyHi
Is possible to sum all WA11?
(A1) WA11 4
(A2) AdBlue 1, WA11 223
(A3) AdBlue 3, WA11 32, shift 4
… and everything is in one column.
Thanks you very much for your help.
Sincerely Marko
-
Mike
December 9, 2022 at 9:59 pm — ReplyThank you for the help. The formula =OR(COUNTIF(M40,”*”&Vendors&”*”)) will give “TRUE” when some part of M40 contains a vendor from “Vendors” list. But how do I get Excel to tell which vendor it found in the M40 cell?
-
PNRao
December 18, 2022 at 6:05 am — ReplyPlease describe your question more elaborately.
Thanks!
-
© Copyright 2012 – 2020 | Excelx.com | All Rights Reserved
Page load link
Проверка переменных и выражений с помощью встроенных функций VBA Excel: IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject.
Проверка переменных и выражений
Встроенные функции VBA Excel — IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject — проверяют значения переменных и выражений на соответствие определенному типу данных или специальному значению.
Синтаксис функций для проверки переменных и выражений:
Expression — выражение, переменная или необязательный аргумент для IsMissing.
Все функции VBA Excel для проверки переменных и выражений являются логическими и возвращают значение типа Boolean — True или False.
Функция IsArray
Описание функции
Функция IsArray возвращает значение типа Boolean, указывающее, является ли переменная массивом:
- True — переменная является массивом;
- False — переменная не является массивом.
Пример с IsArray
Sub Primer1() Dim arr1(), arr2(1 To 10), arr3 Debug.Print IsArray(arr1) ‘Результат: True Debug.Print IsArray(arr2) ‘Результат: True Debug.Print IsArray(arr3) ‘Результат: False arr3 = Array(1, 2, 3, 4, 5) Debug.Print IsArray(arr3) ‘Результат: True End Sub |
Как показывает пример, функция IsArray возвращает True и в том случае, если переменная только объявлена как массив, но еще не содержит значений.
Функция IsDate
Описание функции
Функция IsDate возвращает логическое значение, указывающее, содержит ли переменная значение, которое можно интерпретировать как дату:
- True — переменная содержит дату, выражение возвращает дату, переменная объявлена с типом As Date;
- False — в иных случаях.
Пример с IsDate
Sub Primer2() Dim d1 As String, d2 As Date Debug.Print IsDate(d1) ‘Результат: False Debug.Print IsDate(d2) ‘Результат: True d1 = «14.01.2023» Debug.Print IsDate(d1) ‘Результат: True Debug.Print IsDate(Now) ‘Результат: True End Sub |
Функция IsEmpty
Описание функции
Функция IsEmpty возвращает значение типа Boolean, указывающее, содержит ли переменная общего типа (As Variant) значение Empty:
- True — переменная содержит значение Empty;
- False — переменной присвоено значение, отличное от Empty.
Пример с IsEmpty
Sub Primer3() Dim s As String, v As Variant Debug.Print IsEmpty(s) ‘Результат: False Debug.Print IsEmpty(v) ‘Результат: True v = 125 Debug.Print IsEmpty(v) ‘Результат: False Range(«A1»).Clear Debug.Print IsEmpty(Range(«A1»)) ‘Результат: True Range(«A1») = 123 Debug.Print IsEmpty(Range(«A1»)) ‘Результат: False End Sub |
Как видно из примера, функцию IsEmpty можно использовать для проверки ячеек на содержание значения Empty (пустая ячейка общего формата).
Функция IsError
Описание функции
Функция IsError возвращает логическое значение, указывающее, является ли аргумент функции значением ошибки, определенной пользователем:
- True — аргумент функции является значением ошибки, определенной пользователем;
- False — в иных случаях.
Пользователь может определить одну или несколько ошибок для своей процедуры или функции с рекомендациями действий по ее (их) исправлению. Возвращается номер ошибки с помощью функции CVErr.
Пример с IsError
Допустим, пользователь определил, что ошибка №25 означает несоответствие аргумента функции Vkuba числовому формату:
Function Vkuba(x) If IsNumeric(x) Then Vkuba = x ^ 3 Else Vkuba = CVErr(25) End If End Function Sub Primer4() Debug.Print Vkuba(5) ‘Результат: 125 Debug.Print IsError(Vkuba(5)) ‘Результат: False Debug.Print Vkuba(«пять») ‘Результат: Error 25 Debug.Print IsError(Vkuba(«пять»)) ‘Результат: True End Sub |
Функция IsMissing
Описание функции
Функция IsMissing возвращает значение типа Boolean, указывающее, был ли необязательный аргумент типа данных Variant передан процедуре:
- True — если в процедуру не было передано значение для необязательного аргумента;
- False — значение для необязательного аргумента было передано в процедуру.
Пример с IsMissing
Function Scepka(x, Optional y) If Not IsMissing(y) Then Scepka = x & y Else Scepka = x & » (а необязательный аргумент не подставлен)» End If End Function Sub Primer5() Debug.Print Scepka(«Тропинка», » в лесу») ‘Результат: Тропинка в лесу Debug.Print Scepka(«Тропинка») ‘Результат: Тропинка (а необязательный аргумент не подставлен) End Sub |
Функция IsNull
Описание функции
Функция IsNull возвращает логическое значение, указывающее, является ли Null значением переменной или выражения:
- True — значением переменной или выражения является Null;
- False — в иных случаях.
Пример с IsNull
Функция IsNull особенно необходима из-за того, что любое условие с выражением, в которое входит ключевое слово Null, возвращает значение False:
Sub Primer6() Dim Var Var = Null If Var = Null Then Debug.Print Var ‘Результат: «» If Var <> Null Then Debug.Print Var ‘Результат: «» If IsNull(Var) Then Debug.Print Var ‘Результат: Null End Sub |
Функция IsNumeric
Описание функции
Функция IsNumeric возвращает значение типа Boolean, указывающее, можно ли значение выражения или переменной рассматривать как число:
- True — если аргумент функции может рассматриваться как число;
- False — в иных случаях.
Пример с IsNumeric
Sub Primer7() Debug.Print IsNumeric(«3,14») ‘Результат: True Debug.Print IsNumeric(«четыре») ‘Результат: False End Sub |
Функция IsObject
Описание функции
Функция IsObject возвращает логическое значение, указывающее, является ли переменная объектной:
- True — переменная содержит ссылку на объект или значение Nothing;
- False — в иных случаях.
Функция IsObject актуальна для переменных типа Variant, которые могут содержать как ссылки на объекты, так и значения других типов данных.
Пример с IsObject
Sub Primer8() Dim myObj As Object, myVar As Variant Debug.Print IsObject(myObj) ‘Результат: True Debug.Print IsObject(myVar) ‘Результат: False Set myVar = ActiveSheet Debug.Print IsObject(myVar) ‘Результат: True End Sub |
Vba Format Cell If Is Text And Not A Numeric Value — Excel |
|
Hi all,
I am currently using the below VBA code to do a conditional format with more than 3 options, and it is working fine.
What I would like to add is an operator to check if the cell is text instead of a number, and if so format in a different colour (ie Black background and white text). This should overide all other formatting if the cell contains text.
Any suggestions on what to use? I am thinking an isnum type function but not too familiar with the VBA coding equivalent.
My current code is:
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRange As Range, cell As Range Set MyRange = Range("b2:m35") For Each cell In MyRange If cell.Value <= [i38].Value Then cell.Interior.ColorIndex = 3 End If If cell.Value >= [f38].Value Then cell.Interior.ColorIndex = 45 End If If cell.Value >= [d38].Value Then cell.Interior.ColorIndex = 27 End If If cell.Value >= [b38].Value Then cell.Interior.ColorIndex = 4 End If If cell.Value = "" Then cell.Interior.ColorIndex = 2 End If Next End Sub
Thanks
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
(80% Discount Ends Soon!)
View Course
Similar Topics
I’m using some basic code below in an on Workbook Open event to format cells with a value less then 2 and less than 1 with a particular color.
The code works, but it really slows my worksheet down when opening. Is there better way to write this? Thanks!
Code:
Dim myRange As Range Dim cell As Range Set myRange = Range("V6:V50000") For Each cell In myRange If cell.Value < 2 Then cell.Font.ColorIndex = 5 If cell.Value < 1 Then cell.Font.ColorIndex = 3 Next
Corporate edict.
I have a worksheet that is locked and protected now, except for cells in a certain collumn. I have named the cells in that column «MS96A».
If a user enters a date in a cell or range of cells anywhere in the column, the changed cells also need to be locked and protected (Once they enter a date, it is not allowed EVER to be changed again. Corporate requirement! *Shrug*).
What I am looking for is this. If the user selects that cell again, they will get the usual pop-up message, «The cell or chart that you are trying to change is protected…»
I think I am close, but I am getting an «End If without block If» error on the If Clause.
Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim MRange As Range
Set MRange = Range(«MS96A»)
‘ If Not Intersect(Target, MRange) Is Nothing Then
For Each cell In MRange
Sheets(«Sheet1″).Unprotect Password:=»temp»
cell.Interior.ColorIndex = 3
cell.Font.Color = vbBlack
Selection.Locked = True
Selection.FormulaHidden = False
Next cell
ActiveSheet.Protect Password:=»temp», _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=False
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
Hi everyone,
I’m going nuts trying to figure out how to autofill text from one cell
to another. For example, everytime I type text into cell A20, I want
the exact same thing to cell BL20. The same for B20, BL20, etc.
How do I go about that? I already know how to copy formulas from one
cell to another by dragging the skinny black line of the cell. I guess
I just need the formula for a simple IDENTICAL copying of text.
Thanks in advance,
Mike
I am looking for assistance in having one cell in a text format equals another cell that contains a time value in hh:mm format.
For example: Cell A1 has a time format (hh:mm) value of 04:00; which is the Start Time. I would like cell D1 to have a text format value of «04:00» (result is dependant upon what is entered in A1). I would duplicate the same formulas to reflect Stop Times in other cells.
My final result is to have another cell (F1) use the Concatenate formula to have the Start and Stop time shown in one cell as «04:00 — 12:30». The times would change based on the Time formated values entered into the Start and Stop time cells.
I have researched this in the board and found many excellent ways to do the opposite, but not convert Time format to Text format. Any assistance is greatly appreciated.
-Shane
Hi, this is something so simple that I have forgotten how to do it.
I want F3 to turn yellow if someone selects «Yes» from a drop down list in cell E3, then F3 has no fill once data is entered into it. And F3 turns Black if E3= no selected from the list. Or F3 turns red if E3 contains «TBC»
so in summary,
if E3=»Yes», then F3 conditional format to Yellow until data is entered in it.
if E3=»No», then F3 conditional format to Black
if E3=»TBC», then E3 & F3 conditional format to Red until E3 is changed to
«Yes» or «No» at a later time.
Thanks in Advance for the help
Mutley13
I have been using Excel (XP) to make a text chart for several months. Some of
my text entries are rather lengthy. The past two weeks these lengthy entries
are showing up as pound signs (#########) when I click off the cell. I know
the text will fit in the cell, and the problem isn’t solved by making the
cell bigger or using a little bit less text. I have the cells formatted as
«text» and «wrap to fit». I have printed the pages and the printed version
also has pound signs. I just want my text to show up!
I want to Sum Column «H» starting form «H2» all the way down (rows may vary)
Then Paste My answer in «AM1»
This is what I have so far and for some reason is not working.
Code:
myRange = ActiveSheet.Range("H2", Range("H2").End(xlDown)) Range("AM1") = WorksheetFunction.Sum(myRange)
Any Ideas?
Is there a way I can use conditional formatting or something to change the color of the cell once I enter a value or text into that cell? For example if I currently have the A2 cell color as a gray color, and I enter information into A2 can I have it set to automatically change to no fill or any other color without having to click out of the cell, back into it, and then clicking the button?? Does that make sense??? Can someone help me?
I saw two threads in this forum that asked this question, with no good answer. I am posting this solution for anybody still struggling with this.
The question:
How can you prevent a cell’s contents from overflowing into the next cell?
Of course, you can make the column wider or turn on text wrapping, but you might not want to. Each of those solutions can mess up the layout of your sheet. You may just want to truncate the value.
Some people have suggested putting a space in the next cell. This is unnecessary, a pain in the but, and will mess up any ISBLANK type formulas, among other things.
The solution:
Select the cells in question and turn on text wrapping (Format>Cells>Alignment>Wrap Text).
Now select the row(s) in question and manually set the row height, by right clicking the row number and selecting «Row Height». Check the height of an adjacent row for a good value.
Your cells will now not spill over either horizontally or vertically. They will simply truncate anything that doesn’t fit.
Be careful now, because parts of your data may be hidden. This can cause its own set of problems if one or two digits are neatly hidden away. Think ahead if other people might be using this sheet, and not be expecting to have some data hidden.
Tested in Excel 2002
I have cells in a column, some colored yellow, some not. I am trying to use
the SUMIF function to sum only the cells in the range that are colored. Can
this be done? Can I enter something in the «criteria» part of the formula
that can do this?
=SUMIF(D3:D13,»criteria»,D3:D13)
I also tried to use the CELL function’s color feature, but I couldn’t get it
to work right. I don’t know how to get Excel to recognize if a cell is
colored in a formula.
=CELL(«color»,cell)
It might just be that I don’t know what this means in Help:
«color» —> 1 if the cell is formatted in color for negative values;
otherwise returns 0 (zero).
Can anyone help?
Hi all —
Im very familiar with how to write a macro to automatically autofilter a list based upon a Cell Value (i.e. Range =(A1)…etc.)…. but what I cannot figure out how to correctly write is a way to have Excel automatically autofilter a list for any row that CONTAINS the Cell Value, instead of just the exact value.
Cell Value = «birds»
Example — I need to filter every row so that I see every row that CONTAINS «birds» in the character-string, not just the row that = «birds».
a) is this possible?
If not, I’d like to know also so I can stop attempting to guess (-;
Thanks!!!
Matt
Hi guys,
would really appreciate anyones help with this.
I have a column full of text-formatted fractions…
4/5
6/4
3/1
2/5
4/5
etc, etc…..the column is very long!!
I need to convert these to actual fractions…ones I can add to equations, allowing me to multiply and add.
If I highlight the column and goto «format Cells» and change to fraction, the values still stay in the left of the cell…..its only when I manually click on each individual cell, then tick the little green tick, does the cell validate, and the value in the cell moves to the right (and is therefore a proper value)…..problem is I have to keep doing this for each individual cell…..and I have 70000+ cells in this column!
Any suggestions on how I could speed this up?
thanks
Hello,
I am new to using Excel and I am not very computer literate. I am looking for some help with a spreadsheet I am making. Here is the problem:
I have a column of 14 numbers in cells A1 to A14. If all of these values are less than 2%, I would like a «Pass» to display in cell B1. If any of these values are greater than 2% I would like a «Fail» to display in cell B1.
I have got a formula that works for a single cell but I can’t figure out how to get it to apply to more than one cell. For example, I have entered =IF(A1<2,»Pass»,»Fail») in cell B1. Now if the value I enter in A1 is less than 2, it shows a «Pass», and if the value in A1 is greater than 2 it shows a «Fail» in cell B1. How can I get this to apply to all of the cells from A1 to A14?
If somebody could help me out that would be great.
Thanks,
Randy
I would like to create a formula that removes a specific character if it appears in a cell. In this case, if the text in the name cell starts with * or #, remove it. Otherwise, keep the contents intact. Examples:
Code:
Text in Cell Desired Results *Bobby Abreu Bobby Abreu #Erick Aybar Erick Aybar Jason Bartlett Jason Bartlett
Is there a formula that will get me where I want to be?
Thanks!
Chuck
I was wondering if anyone could help me out please?!?!
I need to have a cell on Sheet2 display the TEXT from a cell on Sheet1, is his possible??
Example:
Sheet1, Cell A1 contains a clients name and I would like to have Sheet2, Sheet3, Sheet4 etc… Display that clients name in a cell of my choosing (could be a different cell on each Sheet) automatically after entering it once on Sheet1, cell A1.
I thought this was possible but I can’t seem to figure it out. I haven’t done any real Excel work in quite a long time but I thought I had done this before a long time ago!! Any help would be GREATLY appreciated!! Thanks in advance…
P.S. If I use autosum to do this it just displays the number 0, obviously, since it is trying to add numbers…
I uploaded a copy of the spreadsheet, What I would like to happen is have the text from Sheet1,D4 automatically be placed in Sheet2,A1 and Sheet3, B2. Hope this helps
-Aric
I have an extensive spreadsheet with several columns and all showing borders
where each cell/column begins and ends. However there are a few cells where
the break with the next cell does not show the line.
I have highlighed the cell in question, gone to format/cell/borders and
everything looks fine. Black color + format border shows square with all
sides of square showing.
Any thoughts on how to fix these few random cells.
Thanks
Hi everyone, this is my first post here. I consider myself a more advanced Excel user and can navigate my way around fairly well. I’ve written a spreadsheet and am wondering if there is a way to permit data entry in a cell, contingent upon another cell being populated.
In simple terms, you can’t enter data in cell X, until cell «Y» has been populated with something.
Can anyone help with this, because I can’t figure it out….
I am trying to establish a formula, but not too sure how.
For example » If Cell A5 has been marked with ‘ X ‘, then copy what is in Cell A6 to
cell C25 «
Hello All
I wonder if you could help with this one, I have a list of data like this (no spaces or other characters)
JN551122B
What I need to do is split each of the characters in to its own cell
if JN551122B was in cell A1 I’d want to return:
B2 C2 D2 E2 F2 G2 H2 I2 J2
J N 5 5 1 1 2 2 B
The nearest I have got is the right function, but it brings over the preceeding characters, and I need each character in its own cell. Hopefully I could copy/paste a formula and change the reference for each cell value, i.e. 1 would return J, 2 = N, 3 = 5, 4 = 5 etc.
Thanks for your help!
I have a textbox in my userform where anything typed in the box is entered into cell A2 in my worksheet. However, multiple lines of text are not properly displayed in my worksheet. I have enabled MultiLine and EnterKeyBehaviour in the properties window of the textbox so I can type multiple lines in my textbox. The problem is that when I press the button to enter the text from my txtbox to cell A2, the cell doesn’t actually display the text in separate lines. It just places a square symbol in the place that enter should have been pressed and the text should have been split into separate lines.
How can I get the separate lines of text in my textbox to be properly displayed in a cell? Thanks for your help in advance..
Иногда появляются ошибки при вводе данных. Наиболее неприятные это случайный ввод букв вместо цыфр, портятся все вычисления, если они есть для данной ячейки. Поэтому считаю актуальным делать для некоторых полей вот такие две проверки:
1. Программа для проверки «Вводятся ли положительные числовые данные?»
Private Sub TextBox1_Change()
If TextBox1.Value < 0 Then
MsgBox «Числа не должны быть отрицательными!», vbOKOnly + vbInformation, «Error»
TextBox1.SetFocus
End If
If Not IsNumeric(TextBox1.Text) And Len(TextBox1) <> 0 Then
MsgBox «Вводить необходимо числовые данные», vbOKOnly + vbInformation, «Error»
TextBox1.Value = «»
TextBox1.SetFocus
End If
End Sub
2. Программа для проверки «Вводятся ли текстовые данные?»
Private Sub TextBox3_Change()
If IsNumeric(TextBox3.Text) And Len(TextBox3) <> 0 Then
MsgBox «Вводить надо текстовые данные!», vbOKOnly + vbInformation, «Error@»
TextBox3.Value = » «
TextBox3.SetFocus
End If
End Sub
Пояснения:
SetFocus – устанавливает фокус на вызвавшем этот метод элементе управления (в данном примере на TextBox). Часто применяется в программах обработки ошибок
IsNumeric – функция проверки типов – является ли переменная числовым значением
Len – возвращает число символов строки