powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / range1.rows.count для range, полученного через union
14 сообщений из 14, страница 1 из 1
range1.rows.count для range, полученного через union
    #35631229
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
set rt1 = worksheets("Sheduling").range("C24:AL25")
set rt2 = worksheets("Sheduling").range("D26:AK27")
set rtu = union(rt1,rt2)
msgbox(rt1.rows.Count)
msgbox(rt2.rows.Count)
msgbox(rtu.rows.Count)
rtu.Select

Имеем в rt1.rows.Count 2 строки, rt2.rows.Count 2 строки... rtu.rows.Count - тоже 2 строки!
Ожидал все-таки 4...
При этом rtu.Select выделяет полученные объединением 4 строки!
MS Office 2003.

Я ожидаю чего-то не того?



***
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631231
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заработался блин...
среда - MS Excel 2003

***
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631233
B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
B
Гость
А у меня на rtu.Select вообще ошибка выдается.
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631235
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BА у меня на rtu.Select вообще ошибка выдается.

у меня worksheet именованный...
попробуйте application.worksheets(1)
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631271
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub test()
    Set rt1 = Worksheets("Sheduling").Range("C24:AL25")
    Set rt2 = Worksheets("Sheduling").Range("D26:AK27")
    
    Set rtu = Union(rt1, rt2)
    
    MsgBox Union(rtu.EntireRow, rtu.EntireRow).Rows.Count
    
    MsgBox Intersect(rtu.EntireRow, Rows).Rows.Count
    
    MsgBox Worksheets("Sheduling").Range("C24:AL25:D26:AK27").Rows.Count
    
    MsgBox Worksheets("Sheduling").Range(rt1.Address & ":" & rt2.Address).Rows.Count
    
    rtu.Select  
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631274
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если строки не соприкасаются, то боюсь, что только циклом.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631281
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL),

много написали конечно, помогло
set rtu = union(rt1.EntireRow,rt2.EntireRow) - нужное количество итоговых строк! )
Но я вот о чем думаю...
set rtu = union(rt1,rt2) - это пример из готового рабочего кода, который вроде бы как функционировал...
У меня под моим Excel 2003 - как убедились, ни в какую не шло?
Может, прокатывало под другими версиями Excel? Или какие-то настройки были?...

Вообще спасибище огромное! :)
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631286
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФрилансерKL (XL),

много написали конечно, помогло
set rtu = union(rt1.EntireRow,rt2.EntireRow) - нужное количество итоговых строк! )
Но я вот о чем думаю...
set rtu = union(rt1,rt2) - это пример из готового рабочего кода, который вроде бы как функционировал...
У меня под моим Excel 2003 - как убедились, ни в какую не шло?
Может, прокатывало под другими версиями Excel? Или какие-то настройки были?...

Вообще спасибище огромное! :)

соврал безбожно - выделились строки целиком, а не области...
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35631314
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS Excel 2003 HelpWhen applied to a Range object that’s a multiple selection, this property returns rows from only the first area of the range. For example, if the Range object has two areas— A1:B2 and C3:D4— Selection.Rows.Count returns 2, not 4. To use this property on a range that may contain a multiple selection, test Areas.Count to determine whether the range is a multiple selection. If it is, loop over each area in the range, as shown in the third example.


Короче говоря, не будет дела. Лучше всего заранее суммировать итоговые размеры, еще при unione.
Идиотская, однако, недоработочка...


***
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35632682
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть, я чего-то не понял...
Код: plaintext
1.
2.
3.
4.
    Dim r As Range, a As Range
    For Each a In r.Areas
        '///
    Next
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35632687
Фотография Фрилансер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДмиДмиМожет быть, я чего-то не понял...
Код: plaintext
1.
2.
3.
4.
    Dim r As Range, a As Range
    For Each a In r.Areas
        '///
    Next


да, разницы между штатным свойством объекта (не работающим правильно) и синтетическим методом получения значения (промотка в цикле)
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35632876
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДмиДмиМожет быть, я чего-то не понял...
Код: plaintext
1.
2.
3.
4.
    Dim r As Range, a As Range
    For Each a In r.Areas
        '///
    Next

Тут еще надо будет отбирать только уникальные значения строк
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35633667
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Тут еще надо будет отбирать только уникальные значения строкДа. Возможно, еще и выбирать максимальный номер последней строки. Но уж до конца-то разжёвывать морковку, чтобы плюнуть в рот, вроде бы в данном случае не нужно
...
Рейтинг: 0 / 0
range1.rows.count для range, полученного через union
    #35633684
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФрилансерДмиДмиМожет быть, я чего-то не понял...

да, разницы между штатным свойством объекта (не работающим правильно)...
Был бы весьма Вам благодарен за ссылку на то, что Вы называете "штатным свойством объекта". Насколько мне до сих пор было известно, rows.count всегда работало правильно только для односвязных интервалов.

Если Вы возьмёте на себя труд набрать в VBE слово Areas и нажать F1, то в конце справки Вы сможете прочесть:

Some operations cannot be performed on more than one area in a selection at the same time; you must loop through the individual areas in the selection and perform the operations on each area separately. The following example performs the operation named "myOperation" on the selected range if the selection contains only one area; if the selection contains multiple areas, the example performs myOperation on each individual area in the selection.

Set rangeToUse = Selection
If rangeToUse.Areas.Count = 1 Then
myOperation rangeToUse
Else
For Each singleArea in rangeToUse.Areas
myOperation singleArea
Next
End If
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / range1.rows.count для range, полученного через union
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]