Свойство Range.Value (Excel)
Возвращает или задает значение Variant , представляющее значение указанного диапазона.
Синтаксис
expression. Value (RangeValueDataType)
выражение: переменная, представляющая объект Range.
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| RangeValueDataType | Необязательный | Variant | Тип данных значения диапазона. Может быть константой XlRangeValueDataType . |
Замечания
При задании диапазона ячеек с содержимым XML-файла электронной таблицы используются только значения первого листа в книге. Невозможно задать или получить несогласительный диапазон ячеек в формате электронной таблицы XML.
Элемент range по умолчанию переадресовывает вызовы значения value без параметров. Таким образом, someRange = someOtherRange эквивалентно someRange.Value = someOtherRange.Value .
Для диапазонов, первая область которых содержит несколько ячеек, значение возвращает значение Variant , содержащее двухмерный массив значений в отдельных ячейках первого диапазона.
При назначении массива размером 2 тумм для свойства Value значения будут скопированы в диапазон за одну операцию. Если целевой диапазон больше массива, остальные ячейки получат значение ошибки.
Назначение массива диапазону с несколькими областями не поддерживается должным образом, и его следует избегать.
Пример
В этом примере для ячейки A1 на листе 1 активной книги задается значение 3,14159.
Worksheets("Sheet1").Range("A1").Value = 3.14159
В этом примере выполняется цикл по ячейкам A1:D10 на листе 1 активной книги. Если одна из ячеек имеет значение меньше 0,001, код заменяет значение на 0 (ноль).
For Each cell in Worksheets("Sheet1").Range("A1:D10") If cell.Value < .001 Then cell.Value = 0 End If Next cell
В этом примере выполняется цикл над значениями в диапазоне A1:CC5000 на Листе1. Если одно из значений меньше 0,001, код заменяет значение на 0 (ноль). Наконец, он копирует значения в исходный диапазон.
Public Sub TruncateSmallValuesInDataArea() Dim dataArea As Excel.Range Set dataArea = ThisworkBook.Worksheets("Sheet1").Range("A1:CC5000") Dim valuesArray() As Variant valuesArray = dataArea.Value Dim rowIndex As Long Dim columnIndex As Long For rowIndex = LBound(valuesArray, 1) To UBound(valuesArray, 1) For columnIndex = LBound(valuesArray, 2) To UBound(valuesArray, 2) If valuesArray(rowIndex, columnIndex) < 0.001 Then valuesArray(rowIndex, columnIndex) = 0 End If Next Next dataArea.Value = valuesArray End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
Были ли сведения на этой странице полезными?
Как получить значение ячейки в excel vba
Здравствуйте. Вопрос такой, как можно получить значение ячейки слева от известной с помощью формулы. Если известен номер позиции исходной ячейки.
Пользователь
Сообщений: 1167 Регистрация: 01.01.1970
22.10.2009 11:21:53
в D1
=СМЕЩ(D1;0;-1)
22.10.2009 11:41:22
А если ячейка D1 содержит адрес ячейки вида $B$55
а нужно получить значение ячейки $A$55
22.10.2009 11:59:46
Пробовал
=СМЕЩ(ЯЧЕЙКА("содержимое";B1);0,-1)
Но почему-то пишет ошибку в формуле.
22.10.2009 12:12:21
Разобрался. Нужно было использовать =ДВССЫЛ()
Страницы: 1
Читают тему
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО "Планета Эксел" ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Developing.ru
Получение данных в форму VBA из ячейки Excel
Весь MS Office, программирование на Visual Basic for Applications и MS VB
lisa-alisa Сообщения: 12 Зарегистрирован: 08 апр 2008, 18:48
Здравствуйте.
Есть книга Excel, там сводные рассчеты и ячейка итогового значения.
Значение в ячейке изменяется при выполнении подсчетов.
Нужно получать в форму ее значение (привязать к метке или textbox) , как это можно сделать?
Заранее спасибо.
VictorM Сообщения: 787 Зарегистрирован: 23 окт 2006, 01:44 Откуда: Lugansk, Ukraine Контактная информация:
Ну, если Вы просто хотите получить в TextBox значение ячейки листа, напишите так: TextBox1.Text = Sheets("Лист1").Range("A1").Value. Если же Вам нужно отслеживать изменение данных в ячейке в динамике, необходимо позаботиться об обновлении значения TextBox по какому - либо признаку.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa Сообщения: 12 Зарегистрирован: 08 апр 2008, 18:48
Да, там изменяются данные. Хотя даже когда прописываю просто ячейку с неизменяемым параметром, ничего не выводится(
VictorM Сообщения: 787 Зарегистрирован: 23 окт 2006, 01:44 Откуда: Lugansk, Ukraine Контактная информация:
В таком случае надо смотреть Ваш код. Выложите хотя бы фрагмент, иначе это разговор "ни о чем".
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa Сообщения: 12 Зарегистрирован: 08 апр 2008, 18:48
накосячила, конечно..очень давно с вижуалом не общалась, это пока все что есть.
Private Sub CommandButton1_Click()
Private Sub TextBox13_Change()
TextBox1.Text = Sheets("Имитация").Range("D61").Value
End Sub
Private Sub UserForm_Click()
ActiveCell.FormulaA18 = "стиомость технической поддержки"
ActiveCell.FormulaA19 = "Полная стоимость в год"
ActiveCell.FormulaI19 = "доход в месяц"
frmUserForm1.Show
End Sub
VictorM Сообщения: 787 Зарегистрирован: 23 окт 2006, 01:44 Откуда: Lugansk, Ukraine Контактная информация:
lisa-alisa, извините, честно говоря - ничего не понял
Из всего Вашего кода удалось получить только это
Private Sub UserForm_Click() Worksheets("Имитация").Activate Range("B3").Formula = "стиомость технической поддержки" Range("B4").Formula = "Полная стоимость в год" Range("B5").Formula = "доход в месяц" Range("B6").Formula = "запросы" Range("B7").Formula = "посещаемость" Range("B8").Formula = "конверсия" frmUserForm1.Show End Sub Private Sub TextBox13_Change() TextBox1.Text = Sheets("Имитация").Range("A1").Value End Sub
а что куда.
А строка TextBox1.Text = Sheets("Имитация").Range("A1").Value работает. Но на событие Change объекта TextBox13.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa Сообщения: 12 Зарегистрирован: 08 апр 2008, 18:48
ну дело в том, что мне нужно не организовать работу таблицы через форму, а только задать через нее параметры(это-то как раз получается), при нажатии кнопки - скалькулировать в Excel(тоже работает)
и получить в форму(в этот вот текстбокс) данные из 1 ячейки, которая и изменяется при подсчете каждый раз.
lisa-alisa Сообщения: 12 Зарегистрирован: 08 апр 2008, 18:48
В принципе можно даже не писать
"Range("B3").Formula = "стиомость технической поддержки"" и прочее - задать через ControlSource в опциях, тоже работает, но получить значение.
VictorM Сообщения: 787 Зарегистрирован: 23 окт 2006, 01:44 Откуда: Lugansk, Ukraine Контактная информация:
Как получить значение из ячейки с формулой
Доброго времени суток, форумчане. Очень нужна Ваша помощь.
В последней колонке таблицы , номер которой я сохраняю в переменной ILastColOs, содержится формула ВПР.
В зависимости от полученного значения, я заполняю каждую строчку в соседнем столбце следующим образом
1 2 3 4 5 6 7 8 9 10
For rw = 2 To ILastRowOs If (.Cells(rw, ILastColOs).Value = "Опережающая поставка") Then .Cells(rw, NColNF2Os).Value = "4.5 Опережающая поставка" Else If (.Cells(rw, NColKatZapOs).Value = "NV") Or (.Cells(rw, NColKatZapOs).Value = "NL") Then .Cells(rw, NColNF2Os).Value = "3.1 НВИ/НЛИ" If (.Cells(rw, NColKatZapOs).Value = "VS") Then .Cells(rw, NColNF2Os).Value = "3.2 Втор. сырье" If (.Cells(rw, NColKatZapOs).Value = "FS") Then .Cells(rw, NColNF2Os).Value = "4.3 ТЗБП" If (.Cells(rw, NColKatZapOs).Value = "GO") Then .Cells(rw, NColNF2Os).Value = "4.1 ГОиЧС" End If Next
Но на значение в стоке 3
.Cells(rw, ILastColOs).Value
выходит сообщение об ошибке "type mismatch"
Запинается в строках, где значение #Н/Д, т.е. ошибка - "Не найдено". Если удалить ручками, то работает. Но мне нужно, чтобы формула оставалась. Что делать?
