Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/58: Рейтинг темы: голосов - 58, средняя оценка - 4.86
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
1

Что возвращает свойство Column объекта Range

21.07.2012, 20:58. Показов 11906. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В справке написано:
Returns the number of the first column in the first area in the specified range.
Я так перевёл на русский: Возвращает номер первого столбца в первой области в определённом диапазоне.
В этом коде:
Visual Basic
1
2
3
4
5
Sub Procedure_1()
 
    Debug.Print Range("B1:C1").Columns(2).Column
 
End Sub
определённый диапазон Range("B1:C1").Columns(2), т.е. второй столбец в диапазоне B1:C1. Значит мы должны получить номер столбца относительно данного диапазона, а получаем номер столбца относительно листа. Получается, что в справке неправильно написано? Должно быть написано, что возвращается номер столбца активного листа?

Примечание: чтобы видеть работу кода: View - Immediate Window.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2012, 20:58
Ответы с готовыми решениями:

Сообщение об ошибке, что невозможно установить свойство Width объекта Range, хотя все объекты существуют
При попытке программно присвоить значение ширины столбца...

При вызове объекта Range, VBA самостоятельно меняет Range на rAnge
Всем доброго дня, у меня такой вопрос. По незнанию создал функцию rAnge(), теперь при вызове...

Диапазону ячеек B2:B20 присвоить имя "Стоимость", используя свойство Cells объекта Range
1) Диапазону ячеек B2:B20 присвоить имя "Стоимость", используя свойство Cells объекта Range. 2)...

Передать свойство объекта в свойство объекта в объекте что в массиве
var array = ; function func(a, b, c) { array = {}; array.a = {}; // вместо "a" - аргумент ...

9
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
21.07.2012, 21:07 2
а разве в справке написано что-то насчёт относительности нумерации?
покажите где?
1
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
21.07.2012, 21:23 3
Выражение Range("B1:C1").Columns(2) возвращает объект-диапазон. У диапазона есть свойство Column, которое не зависит от того, каким способом этот диапазон был получен.

Добавлено через 6 минут
Цитата Сообщение от Busine2012 Посмотреть сообщение
Я так перевёл на русский: Возвращает номер первого столбца в первой области в определённом диапазоне.
"в определённом диапазоне" относится к "первой области", а не к номеру столбца
1
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
22.07.2012, 08:25  [ТС] 4
Казанский, т.е. свойство Column всегда определяет номер столбца рабочего листа. Я думаю, что нужно было внести уточнение в Справку.

ikki,
Цитата Сообщение от ikki Посмотреть сообщение
а разве в справке написано что-то насчёт относительности нумерации?
вот я и думаю, что нужно уточнить в Справке - в отношении чего применяется Column.



Т.е. вот так должно быть в справке: Возвращает номер столбца рабочего листа, с которым пересекается первый столбец заданного диапазона.
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
22.07.2012, 08:55 5
гм... "столбец пересекается с листом"? или "столбец пересекается со столбцом"?
конечно, сильно сказано.
но, имхо, это еще больше запутает народ.

на мой взгляд, уточнения не нужны - в конце концов, существует такое понятие: "по умолчанию". но если будут - то пусть.
0
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
22.07.2012, 09:09  [ТС] 6
Цитата Сообщение от ikki Посмотреть сообщение
"столбец пересекается с листом"? или "столбец пересекается со столбцом"?
да, задаваемый диапазон также состоит из строк и столбцов и представляет собой таблицу, только эта таблица не видима глазу, а хранится в оперативной памяти компьютера. В этом диапазоне также есть такая нумерация A1, B1, где A1 будет не ячейка рабочего листа, а ячейка заданного диапазона.
0
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
22.07.2012, 09:33 7
Хм, допустим, один и тот же диапазон получен разными способами. И что, свойство Column должно различаться?
Visual Basic
1
2
3
4
5
6
7
8
Sub bb()
Dim a As Range, b As Range, c As Range
Set a = Range("B1:C1").Columns(2)
Set b = Range("C1")
Set c = Intersect(Rows(1), Columns(3))
Debug.Print a.Address, b.Address, c.Address
Debug.Print a.Column, b.Column, c.Column
End Sub
А перевод я бы изменил так:

Возвращает номер первого столбца первой области определённого диапазона.
0
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
22.07.2012, 10:26  [ТС] 8
Цитата Сообщение от Казанский Посмотреть сообщение
Возвращает номер первого столбца первой области определённого диапазона.
но возвращается номер не первого столбца определённого диапазона, а номер столбца рабочего листа. И номер первого столбца так и будет №1. А про область можно и не упоминать, т.к. столбцы в определённом диапазоне уникальны.


Казанский, про код в #7 пока не могу сказать, т.к. нужно отдохнуть от этой темы, а то уже всё перепуталось.
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
22.07.2012, 10:32 9
"русский язык - это тако-ой русский язык!!!" (с)
(чего уж там про английский... )

сравниваем: "функция возвращает номер первого девятиэтажного дома", "функция возвращает номер второго дома после большого тополя", "функция возвращает номер лучшей школы нашего района", "функция возвращает номер столбца первой синей ячейки".

должно вернуть номер дома на улице, номер школы как таковой и номер столбца листа, не правда ли?
0
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
23.07.2012, 13:33  [ТС] 10
Казанский, да, в этом коде:
Visual Basic
1
2
3
4
5
6
7
8
Sub bb()
    Dim a As Range, b As Range, c As Range
    Set a = Range("B1:C1").Columns(2)
    Set b = Range("C1")
    Set c = Intersect(Rows(1), Columns(3))
    Debug.Print a.Address, b.Address, c.Address
    Debug.Print a.Column, b.Column, c.Column
End Sub
для диапазона a должен возвращаться номер столбца этого диапазона: Range("B1:C1"), а не номер столбца рабочего листа.
В двух других случаях под определённым диапазоном понимается рабочая книга, поэтому всё правильно.

Примечание:
чтобы увидеть работу кода: View - Immediate Window.


Цитата Сообщение от Busine2012 Посмотреть сообщение
А про область можно и не упоминать, т.к. столбцы в определённом диапазоне уникальны.
про это я ошибся: номера столбцов уникальны внутри области.
0
23.07.2012, 13:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2012, 13:33
Помогаю со студенческими работами здесь

Свойство объекта - что я делаю не так?
uses GraphABC, ABCObjects; var block: array of RectangleABC; begin // Не буду загромождать...

Верно ли, что переменная - это свойство глобального объекта?
Я так понял что переменная это свойство глобального объекта,это так? Вопрос такой: Но так ведь...

свойство Column
Добрый день. По запросам заполняю таблицу грид разными данными из БД. Некоторые таблички имеют поля...

ERROR 1264 (22003): Out of range value for column 'sales' at row 1
Здравствуйте, не могу понять где ошибка. Пишет что вышел за границы 'sales', но вроде все верно. ...

Свойство column свойства margin
Есть свойства: p { column-count: 4; /*Количество колонок в многоколоночном тексте*/ ...

Табличная форма и свойство Column()
Доброго дня, уважаемые форумчане! Прошу вашей помощи. Есть форма Товар. В ней поле со списком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru