Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / range1.rows.count для range, полученного через union / 14 сообщений из 14, страница 1 из 1
01.11.2008, 21:51:54
    #35631229
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
Код: 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
01.11.2008, 21:54:39
    #35631231
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
заработался блин...
среда - MS Excel 2003

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

у меня worksheet именованный...
попробуйте application.worksheets(1)
...
Рейтинг: 0 / 0
01.11.2008, 23:21:05
    #35631271
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
Код: 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
01.11.2008, 23:27:29
    #35631274
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
Если строки не соприкасаются, то боюсь, что только циклом.

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

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

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

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

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

соврал безбожно - выделились строки целиком, а не области...
...
Рейтинг: 0 / 0
02.11.2008, 00:27:44
    #35631314
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
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
03.11.2008, 18:56:08
    #35632682
ДмиДми
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
Может быть, я чего-то не понял...
Код: plaintext
1.
2.
3.
4.
    Dim r As Range, a As Range
    For Each a In r.Areas
        '///
    Next
...
Рейтинг: 0 / 0
03.11.2008, 18:59:19
    #35632687
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
range1.rows.count для range, полученного через union
ДмиДмиМожет быть, я чего-то не понял...
Код: plaintext
1.
2.
3.
4.
    Dim r As Range, a As Range
    For Each a In r.Areas
        '///
    Next


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

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

да, разницы между штатным свойством объекта (не работающим правильно)...
Был бы весьма Вам благодарен за ссылку на то, что Вы называете "штатным свойством объекта". Насколько мне до сих пор было известно, 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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / range1.rows.count для range, полученного через union / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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