Свойство Text объекта Range в VBA Excel. Примеры использования свойства Range.Text для поиска форматированных значений в ячейках указанного диапазона.
Свойство Range.Text
Данное свойство предназначено только для чтения и применяется, чаще всего, к одной ячейке. Если диапазон включает несколько ячеек, свойство Range.Text возвращает Null, за исключением случаев, когда все ячейки в диапазоне имеют одинаковое содержимое и форматы.
Различия между свойствами Text, Value и Value2 смотрите в последнем параграфе статьи Свойства ячейки (объекта Range).
Примеры с Range.Text
Пример 1
Поиск с помощью свойств Range.Text и Range.Value числовых значений с ведущими нулями и приведение их к общему формату:
1 2 3 4 5 6 7 8 |
Sub Primer1() Dim myCell As Range For Each myCell In Range("A1:D5") If Len(myCell.Value) <> Len(myCell.Text) Then myCell.NumberFormat = "General" End If Next End Sub |
Каждый код VBA Excel должен корректироваться под каждый конкретный случай. Например, код Примера 1:
- приведет к общему формату, в том числе, значения ячеек с дополнительными нулями в конце дробной части;
- не приведет к общему формату, если значение с «лишними» нулями не уместилось в ячейку, преобразовалось в строку решеток и количество знаков решетки равно количеству знаков, возвращенному свойством Value;
- не приведет к общему формату, если первый ведущий нуль будет замещен другой цифрой.
Пример 2
Поиск в столбце с датами отображаемых значений с годом из 2 знаков (ДД.ММ.ГГ или Д.М.ГГ) и приведение их к формату с годом из 4 знаков (ДД.ММ.ГГГГ):
1 2 3 4 5 6 7 8 |
Sub Primer2() Dim myCell As Range For Each myCell In Range("A1:A10") If Len(myCell.Text) < 10 Then myCell.NumberFormat = "DD.MM.YYYY" End If Next End Sub |
Пример 3
Зависимость отображаемого в ячейке значения от ширины столбца:
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Primer3() With Range("A1") .NumberFormat = "General" .Value = 123456789 .Columns.AutoFit MsgBox .Text 'Результат: 1234567890 .ColumnWidth = .ColumnWidth / 2 MsgBox .Text 'Результат: #### .ColumnWidth = .ColumnWidth * 1.5 MsgBox .Text 'Результат: 1,2E+08 End With End Sub |
Спасибо за полезную информацию.
Обсуждение закрыто.