Страницы: 1
RSS
VBA: Узнать направление массива
 
Добрый вечер.

Есть выделенный диапазон. Как сделать так, чтобы если выделен диапазон в столбец (например, A1:A10), то x=1?

Спасибо.
 
Код
if selection.columns.count=1 then msgbox("Столбец")
if selection.rows.count=1 then msgbox("Строка")
 
Спасибо.
А как сделать, если диапазон ссылается на закрытую книгу?
 
а как можно выделить диапазон в закрытой книге?
 
С Selection все работает. А вот если я сослался на диапазон в другой книге и закрыл ее? :)

Например:

Function test (r as variant)
if r.columns.count=1 then msgbox("Столбец")
if r.rows.count=1 then msgbox("Строка")
End Function

Я может что-то неправильно написал, но r='C:\Users\enzo\Desktop\[test.xlsx]Лист1'!$A$3:$A$47
 
Я не знаю, как макросы работают с закрытыми книгами. Из тех отрывочных знаний, что я почерпнул на форумах, книги нужно открывать... но может и ошибаюсь.
 
Нельзя получить выделение из закрытой книги. Объект Selection принадлежит приложению, а не конкретному объекту(листу или книге), хотя эти самые другие объекты(листы и книги) могут наследовать данный метод у своего родителя Application и сохранять его параметры в случае, если будут активированы.
Прочитайте статью: Как получить данные из закрытой книги?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Чтобы узнать, чего в аргументе r больше, строк или столбцов:

Код
Function Test(r As Variant)
  Dim IsCol As Boolean
  If IsObject(r) Then
    IsCol = r.Rows.Count > r.Columns.Count
  ElseIf IsArray(r) Then
    IsCol = UBound(r, 1) > UBound(r, 2)
  End If
  MsgBox "Referenced to " & IIf(IsCol, "Column(s)", "Row(s)")
End Function
'


При равенстве столбцов и строк предпочтение здесь отдано строкам
Изменено: ZVI - 30.01.2013 21:40:37
 
ZVI, спасибо, помогло  :)
Страницы: 1
Наверх