Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Range.Value. Разница с ним и без него - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Range.Value. Разница с ним и без него (Макросы/Sub)
Range.Value. Разница с ним и без него
китин Дата: Пятница, 07.04.2017, 11:28 | Сообщение № 1
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
В в чем принципиальное отличие вот этих двух конструкций ( проверял: обе работают )
[vba]
Код
If Range("A" & i).Value = "" Then Range("A" & i) = [d1]
[/vba]
и
[vba]
Код
If Range("A" & i).Value = "" Then Range("A" & i).Value = [d1].Value
[/vba]
[p.s.]заранее прошу прощения за возможно тупые вопросы


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 07.04.2017, 15:09
 
Ответить
СообщениеВ в чем принципиальное отличие вот этих двух конструкций ( проверял: обе работают )
[vba]
Код
If Range("A" & i).Value = "" Then Range("A" & i) = [d1]
[/vba]
и
[vba]
Код
If Range("A" & i).Value = "" Then Range("A" & i).Value = [d1].Value
[/vba]
[p.s.]заранее прошу прощения за возможно тупые вопросы

Автор - китин
Дата добавления - 07.04.2017 в 11:28
_Boroda_ Дата: Пятница, 07.04.2017, 11:47 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Игорь, ну ты чего?
1. Вопрос про VBA, а ты его в неформалку всунул. В правилах этой ветки что написано?
Цитата
В этом разделе разрешено общение на любые темы, кроме обсуждаемых в других разделах форума

2. Даже если тему в ветку VBA перенести, то это будет очередная помойка типа Табель учета рабочего времени
Давай уж нормально все делать?
И, кстати, если будет отдельный вопрос на каждую такую
по мелочам

, то и тем, кто потом будет искать подобное, найти гораздо легче будет.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеИгорь, ну ты чего?
1. Вопрос про VBA, а ты его в неформалку всунул. В правилах этой ветки что написано?
Цитата
В этом разделе разрешено общение на любые темы, кроме обсуждаемых в других разделах форума

2. Даже если тему в ветку VBA перенести, то это будет очередная помойка типа Табель учета рабочего времени
Давай уж нормально все делать?
И, кстати, если будет отдельный вопрос на каждую такую
по мелочам

, то и тем, кто потом будет искать подобное, найти гораздо легче будет.

Автор - _Boroda_
Дата добавления - 07.04.2017 в 11:47
китин Дата: Пятница, 07.04.2017, 12:33 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
ок. подумал, что все таки получится типа FAQ по VBA для начинающих. :'(
ну раз так перенеси в вопросы по VBA .Заголовок : Value. Разница с ним и без него


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеок. подумал, что все таки получится типа FAQ по VBA для начинающих. :'(
ну раз так перенеси в вопросы по VBA .Заголовок : Value. Разница с ним и без него

Автор - китин
Дата добавления - 07.04.2017 в 12:33
Che79 Дата: Пятница, 07.04.2017, 12:48 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
[offtop]Такая тема - "ветка" была бы очень актуальна и для меня тоже, но Правила есть Правила.[/offtop]


Делай нормально и будет нормально!
 
Ответить
Сообщение[offtop]Такая тема - "ветка" была бы очень актуальна и для меня тоже, но Правила есть Правила.[/offtop]

Автор - Che79
Дата добавления - 07.04.2017 в 12:48
Gustav Дата: Пятница, 07.04.2017, 14:15 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Разница с ним и без него

Уже можно отвечать или дождаться переезда?

Value для Range - свойство по умолчанию, т.е. может быть опущено в операциях по присвоению и сравнению значений в ячейках. И дальше система сама разбирается по контексту, где имеется в виду значение ячейки, а где сам объект Range. Поэтому Range("A1") = 15 это то же самое, что Range("A1").Value = 15. Или даже Range("A1").Value(10) = 15 - немногие знают, что у Value есть параметр! 10 - это собственно значение (и тоже по умолчанию), а 11 и 12 отвечают за XML, можно попробовать в окне отладки выполнить: ? Range("A1").Value(11)

Я в программах предпочитаю писать явно: Range("A1").Value - мне не сложно, а последующему читателю понятнее.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Разница с ним и без него

Уже можно отвечать или дождаться переезда?

Value для Range - свойство по умолчанию, т.е. может быть опущено в операциях по присвоению и сравнению значений в ячейках. И дальше система сама разбирается по контексту, где имеется в виду значение ячейки, а где сам объект Range. Поэтому Range("A1") = 15 это то же самое, что Range("A1").Value = 15. Или даже Range("A1").Value(10) = 15 - немногие знают, что у Value есть параметр! 10 - это собственно значение (и тоже по умолчанию), а 11 и 12 отвечают за XML, можно попробовать в окне отладки выполнить: ? Range("A1").Value(11)

Я в программах предпочитаю писать явно: Range("A1").Value - мне не сложно, а последующему читателю понятнее.

Автор - Gustav
Дата добавления - 07.04.2017 в 14:15
китин Дата: Пятница, 07.04.2017, 14:36 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
то есть по большому счету
[vba]
Код
[d1]
[/vba]и [vba]
Код
[d1].Value
[/vba]это одно и то же?
и [vba]
Код
Range("D1")
[/vba] и [vba]
Код
[d1]
[/vba] тоже не отличаются? или я ошибаюсь?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 07.04.2017, 14:38
 
Ответить
Сообщението есть по большому счету
[vba]
Код
[d1]
[/vba]и [vba]
Код
[d1].Value
[/vba]это одно и то же?
и [vba]
Код
Range("D1")
[/vba] и [vba]
Код
[d1]
[/vba] тоже не отличаются? или я ошибаюсь?

Автор - китин
Дата добавления - 07.04.2017 в 14:36
_Boroda_ Дата: Пятница, 07.04.2017, 14:43 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Выражение в квадратных скобках - это примерно то же самое, что и макрофункция ВЫЧИСЛИТЬ, которую можно писать в диспетчере имен

Вот, почитай
https://msdn.microsoft.com/en-us/library/office/ff193019.aspx


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВыражение в квадратных скобках - это примерно то же самое, что и макрофункция ВЫЧИСЛИТЬ, которую можно писать в диспетчере имен

Вот, почитай
https://msdn.microsoft.com/en-us/library/office/ff193019.aspx

Автор - _Boroda_
Дата добавления - 07.04.2017 в 14:43
китин Дата: Пятница, 07.04.2017, 15:01 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
интересно, но непонятно. тем более на вражеском. а ведь говорила мне мама : учи язык вероятного противника :D
[p.s.]мдя, я себе лстил :'(


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 07.04.2017, 15:05
 
Ответить
Сообщениеинтересно, но непонятно. тем более на вражеском. а ведь говорила мне мама : учи язык вероятного противника :D
[p.s.]мдя, я себе лстил :'(

Автор - китин
Дата добавления - 07.04.2017 в 15:01
_Boroda_ Дата: Пятница, 07.04.2017, 15:10 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я тоже на вражеском ничего не понимаю. Зайди Хромом, там есть такая кнопуля

нажми на нее и все переведется. Пусть немного корявенько, но общий смысл ясен
К сообщению приложен файл: 8339146.png (14.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЯ тоже на вражеском ничего не понимаю. Зайди Хромом, там есть такая кнопуля

нажми на нее и все переведется. Пусть немного корявенько, но общий смысл ясен

Автор - _Boroda_
Дата добавления - 07.04.2017 в 15:10
китин Дата: Пятница, 07.04.2017, 15:13 | Сообщение № 10
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
то есть вот это вот по большому счету некорректно?
[vba]
Код
Range("A" & i).Value = [d1].Value
[/vba]

лучше писать так?
[vba]
Код
Range("A" & i).Value = Range("D1").Value
[/vba]


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщението есть вот это вот по большому счету некорректно?
[vba]
Код
Range("A" & i).Value = [d1].Value
[/vba]

лучше писать так?
[vba]
Код
Range("A" & i).Value = Range("D1").Value
[/vba]

Автор - китин
Дата добавления - 07.04.2017 в 15:13
китин Дата: Пятница, 07.04.2017, 15:14 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Зайди Хромом,

Нет на работе Хрома. Да и дома нет. Надо поставить


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Зайди Хромом,

Нет на работе Хрома. Да и дома нет. Надо поставить

Автор - китин
Дата добавления - 07.04.2017 в 15:14
_Boroda_ Дата: Пятница, 07.04.2017, 15:37 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
вот это вот по большому счету некорректно?

Почему?
Во, посмотри, ZVI пишет очень подробно
http://www.planetaexcel.ru/forum....e226107


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
вот это вот по большому счету некорректно?

Почему?
Во, посмотри, ZVI пишет очень подробно
http://www.planetaexcel.ru/forum....e226107

Автор - _Boroda_
Дата добавления - 07.04.2017 в 15:37
Gustav Дата: Пятница, 07.04.2017, 17:34 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
[vba]
Код
Sub Разные_способы_адресации_к_одной_ячейке_D1()
    Debug.Print [D1].Address
    Debug.Print Range("D1").Address
    Debug.Print Cells(1, 4).Address
    Debug.Print Cells(1, "D").Address
    Debug.Print Cells(4).Address 'D1 ' одноиндексная нумерация змейкой по всему листу, по строкам, в Excel 2007 и выше в каждой строке находится 16384 ячейки

    Debug.Print Cells(16388).Address 'D2
End Sub
[/vba]
Первые 5 операторов выведут в Окно отладки один и тот же адрес - $D$1. Если вместо Address укажем Value, то получим 5 форм обращения к значению ячейки D1. Если не укажем Value - то еще 5 форм. Итого 10 вариантов. Все абсолютно корректные, но использовать что-то конкретное надо исходя из задачи. Если, например, нужен перебор в цикле, то явно напрашивается использование Cells(i, j). Форма [D1] в этом смысле самая бесперспективная, но она же и самая короткая по символам, что хорошо в небольших макросах на скорую руку, типа демонстрационных примеров.

P.S. Хотя! Прошёл по ссылке Александра - беру свои слова про "бесперспективность" обратно. Форма [MySel].Address с заранее заданным MySel очень даже интригующая!


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 07.04.2017, 18:05
 
Ответить
Сообщение[vba]
Код
Sub Разные_способы_адресации_к_одной_ячейке_D1()
    Debug.Print [D1].Address
    Debug.Print Range("D1").Address
    Debug.Print Cells(1, 4).Address
    Debug.Print Cells(1, "D").Address
    Debug.Print Cells(4).Address 'D1 ' одноиндексная нумерация змейкой по всему листу, по строкам, в Excel 2007 и выше в каждой строке находится 16384 ячейки

    Debug.Print Cells(16388).Address 'D2
End Sub
[/vba]
Первые 5 операторов выведут в Окно отладки один и тот же адрес - $D$1. Если вместо Address укажем Value, то получим 5 форм обращения к значению ячейки D1. Если не укажем Value - то еще 5 форм. Итого 10 вариантов. Все абсолютно корректные, но использовать что-то конкретное надо исходя из задачи. Если, например, нужен перебор в цикле, то явно напрашивается использование Cells(i, j). Форма [D1] в этом смысле самая бесперспективная, но она же и самая короткая по символам, что хорошо в небольших макросах на скорую руку, типа демонстрационных примеров.

P.S. Хотя! Прошёл по ссылке Александра - беру свои слова про "бесперспективность" обратно. Форма [MySel].Address с заранее заданным MySel очень даже интригующая!

Автор - Gustav
Дата добавления - 07.04.2017 в 17:34
китин Дата: Понедельник, 24.04.2017, 09:16 | Сообщение № 14
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Поигрался со всеми вариантами. начинаю потихоньку въезжать. всем спасибо!!!


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеПоигрался со всеми вариантами. начинаю потихоньку въезжать. всем спасибо!!!

Автор - китин
Дата добавления - 24.04.2017 в 09:16
китин Дата: Пятница, 19.05.2017, 14:34 | Сообщение № 15
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
поднимем тему: а в чем разница между [vba]
Код
Value = Target.Value
[/vba] и [vba]
Код
Value = Rng.Value
[/vba]и [vba] и
Код
.value = .value
[/vba] и так далее. Поискал по интернету ( правда недолго и невнимательно :D %) ) объяснялок не нашел . если есть у кого ссылки ( не на вражеском- не обучен) скиньте плз


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеподнимем тему: а в чем разница между [vba]
Код
Value = Target.Value
[/vba] и [vba]
Код
Value = Rng.Value
[/vba]и [vba] и
Код
.value = .value
[/vba] и так далее. Поискал по интернету ( правда недолго и невнимательно :D %) ) объяснялок не нашел . если есть у кого ссылки ( не на вражеском- не обучен) скиньте плз

Автор - китин
Дата добавления - 19.05.2017 в 14:34
KuklP Дата: Пятница, 19.05.2017, 14:40 | Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Игорь:
Value = Target.Value - попытка присвоить переменной Value значение активной ячейки. Категорически не рекомендую использовать в качестве названий переменных зарезервированные слова.
Value = Rng.Value та же фигня, только в качестве аргумента ранее объявленный диапазон\ячейка.
.value = .value - испольуется для преобразования формул в значения.
:)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Пятница, 19.05.2017, 14:41
 
Ответить
СообщениеИгорь:
Value = Target.Value - попытка присвоить переменной Value значение активной ячейки. Категорически не рекомендую использовать в качестве названий переменных зарезервированные слова.
Value = Rng.Value та же фигня, только в качестве аргумента ранее объявленный диапазон\ячейка.
.value = .value - испольуется для преобразования формул в значения.
:)

Автор - KuklP
Дата добавления - 19.05.2017 в 14:40
китин Дата: Пятница, 19.05.2017, 14:50 | Сообщение № 17
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
то есть Rng это диапазон. я так и подозревал :D
.value = .value
это получается = спец.вставка только значения.
Спасибо Сергей


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщението есть Rng это диапазон. я так и подозревал :D
.value = .value
это получается = спец.вставка только значения.
Спасибо Сергей

Автор - китин
Дата добавления - 19.05.2017 в 14:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Range.Value. Разница с ним и без него (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!