Как в Vba выделить несколько ячеек???
ActiveCell.Offset(3, 1).Range("A1:C4").Select
не прокатит!!!
Cells тоже нельзя использовать... т.е.
ActiveCell.Offset(3, 1).Range(Cells(1,1), Cells(4,4)).Select
тоже нельзя использовать.
Если кто-нибудь знает иной способ - подскажите!!!
Цитата:
Originally posted by Oracloid
Необходимо выделить несколько ячеек указывая столбцы числом, а не буквой, т.е.
ActiveCell.Offset(3, 1).Range("A1:C4").Select
не прокатит!!!
Cells тоже нельзя использовать... т.е.
ActiveCell.Offset(3, 1).Range(Cells(1,1), Cells(4,4)).Select
тоже нельзя использовать.
Если кто-нибудь знает иной способ - подскажите!!!
Необходимо выделить несколько ячеек указывая столбцы числом, а не буквой, т.е.
ActiveCell.Offset(3, 1).Range("A1:C4").Select
не прокатит!!!
Cells тоже нельзя использовать... т.е.
ActiveCell.Offset(3, 1).Range(Cells(1,1), Cells(4,4)).Select
тоже нельзя использовать.
Если кто-нибудь знает иной способ - подскажите!!!
Что-то ты замудрил.
ActiveSheet.Range(Cells(1, 2), Cells(3, 7)).Select
Или пиши подробнее, что тебе можно, что нельзя и почему нельзя. :)
Обращатся к ячейкам через букву сложнее, чем просто указывать номер столбца и номер ячейки. Например нужно написать чтобы по циклу все пробежать и ты не ломаешь голову.
Использую Forms (Oracle-овый продукт) и OLE для того чтобы управлять Екселом.
Исходный текст выглядит так:
ArgList OLE2.LIST_TYPE;
ArgList:=OLE2.CREATE_ARGLIST; --передаваемый аргумент
OLE2.ADD_ARG(ArgList, 'A1');
OLE2.ADD_ARG(ArgList, 'B5');
cell:=OLE2.get_OBJ_property(worksheet, 'range', ArgList);
OLE2.DESTROY_ARGLIST(ArgList);
OLE2.Invoke(cell,'select');
Это работает.
Но хотелось бы передавать координаты ячеек указывая столбец цифрой, а не буквой.
Например:
OLE2.ADD_ARG(ArgList, '1:1');--верхняя левая
OLE2.ADD_ARG(ArgList, '2:5');--нижнаяя правая
Я не могу передать в качестве аргумента 'Cell(1,1)' - нужны конкретные значения
Цитата:
Originally posted by Oracloid
Дело вот какое:
Обращатся к ячейкам через букву сложнее, чем просто указывать номер столбца и номер ячейки. Например нужно написать чтобы по циклу все пробежать и ты не ломаешь голову.
Использую Forms (Oracle-овый продукт) и OLE для того чтобы управлять Екселом.
Исходный текст выглядит так:
ArgList OLE2.LIST_TYPE;
ArgList:=OLE2.CREATE_ARGLIST; --передаваемый аргумент
OLE2.ADD_ARG(ArgList, 'A1');
OLE2.ADD_ARG(ArgList, 'B5');
cell:=OLE2.get_OBJ_property(worksheet, 'range', ArgList);
OLE2.DESTROY_ARGLIST(ArgList);
OLE2.Invoke(cell,'select');
Это работает.
Но хотелось бы передавать координаты ячеек указывая столбец цифрой, а не буквой.
Например:
OLE2.ADD_ARG(ArgList, '1:1');--верхняя левая
OLE2.ADD_ARG(ArgList, '2:5');--нижнаяя правая
Я не могу передать в качестве аргумента 'Cell(1,1)' - нужны конкретные значения
Дело вот какое:
Обращатся к ячейкам через букву сложнее, чем просто указывать номер столбца и номер ячейки. Например нужно написать чтобы по циклу все пробежать и ты не ломаешь голову.
Использую Forms (Oracle-овый продукт) и OLE для того чтобы управлять Екселом.
Исходный текст выглядит так:
ArgList OLE2.LIST_TYPE;
ArgList:=OLE2.CREATE_ARGLIST; --передаваемый аргумент
OLE2.ADD_ARG(ArgList, 'A1');
OLE2.ADD_ARG(ArgList, 'B5');
cell:=OLE2.get_OBJ_property(worksheet, 'range', ArgList);
OLE2.DESTROY_ARGLIST(ArgList);
OLE2.Invoke(cell,'select');
Это работает.
Но хотелось бы передавать координаты ячеек указывая столбец цифрой, а не буквой.
Например:
OLE2.ADD_ARG(ArgList, '1:1');--верхняя левая
OLE2.ADD_ARG(ArgList, '2:5');--нижнаяя правая
Я не могу передать в качестве аргумента 'Cell(1,1)' - нужны конкретные значения
Попробуй 'R5C2'. 5 - row (строка), 2 - column (столбец).
Пробовал - не проходит... =(
Цитата:
Originally posted by Oracloid
Пробовал - не проходит... =(
Пробовал - не проходит... =(
Тогда извини. Я просто не специалист в области взаимодействия с Ораклом. Я просто Эксельщик. :(
Да все нормально... Если такая возможность есть - рано или поздно сделаю...
Спасибо за участие!
Цитата:
Originally posted by Oracloid
2 Cutty Sark
Да все нормально... Если такая возможность есть - рано или поздно сделаю...
Спасибо за участие!
2 Cutty Sark
Да все нормально... Если такая возможность есть - рано или поздно сделаю...
Спасибо за участие!
Удачи!
Кстати, что это у тебя за город такой? :D
Цитата:
Originally posted by Cutty Sark
Удачи!
Кстати, что это у тебя за город такой? :D
Удачи!
Кстати, что это у тебя за город такой? :D
Город назван в честь реки Мега. Находится в Тюменской области. Компанию Славнефть знаешь - это наша. :D
Цитата:
Originally posted by Oracloid
Город назван в честь реки Мега. Находится в Тюменской области. Компанию Славнефть знаешь - это наша. :D
Город назван в честь реки Мега. Находится в Тюменской области. Компанию Славнефть знаешь - это наша. :D
Понятки. А то у меня столько ассоциаций вылезло... :)
Цитата:
Originally posted by Cutty Sark
Понятки. А то у меня столько ассоциаций вылезло... :)
Понятки. А то у меня столько ассоциаций вылезло... :)
:D
можно вычислить номер столбца из буквенного кода и буквенный код из номера столбца
Цитата:
Originally posted by Gauss
можно вычислить номер столбца из буквенного кода и буквенный код из номера столбца
можно вычислить номер столбца из буквенного кода и буквенный код из номера столбца
Понятно что можно написать функцию которая будет это дело преобразовывать, но это повлияет на производительность.
Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address() ' $A$1
Т.е. для того чтобы выделить ячейки не указывая в адресе буквы достаточно такой простой конструкции...
Всем удачи!
Cutty Sark, подскажи тогда мне как выделить несколько ячеек активной строки. Скажем с 1 по 21 столбец. Только активную строку. Чет я многое перепробовал и не получается.
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 21)).Select
Доперло только что.
Код:
Cells(ActiveCell.Row, 1).Resize(, 21).Select
Код:
ActiveCell.EntireRow(1).Resize(, 21).Select
Код:
ActiveCell.EntireRow.Cells(1).Resize(, 21).Select
или даже :
Код:
ActiveCell.EntireRow.Columns("A:U").Select
Код:
Range("A1:U1").Offset(ActiveCell.Row - 1).Select
Вот только, для того, чтобы работать с об'ектом Range, в большинстве случаев, выделять его не нужно.