Работа с выделенными ячейками

  • Автор темы Автор темы mihailo-v
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

mihailo-v

Участник
Топикстартер
Сообщения
65
Реакции
0
День добрый!
Давно здесь не был, отдельный привет vbatushev, который давал мне делные советы.

Вот снова делаю каталог и ясное дело без скриптов все было бы уныло.
В общем пишу на JS такой скрипт (перед запуском в таблице выделяются несколько ячеек):

Код:
var myCells = app.selection;
var myC=app.selection.length;
alelt (myC);

Независимо от выделения эта зараза возвращает значение myC=1
Более того, тип выделения - Cell, а должно быть Array. Глазам своим не верю.
Помогите разобраться
 
Ответ: Работа с выделенными ячейками

Я вообще не понимаю логики приведенного куска.
Что нужно получить? Если количество выделенных ячеек, то вторая строка должна быть
myc = app.Selection(1).Cells.Count
(код на бейсике, жабу не знаю, но по идее вместо count нужно поставить length)
 
Ответ: Работа с выделенными ячейками

Просто не смотри на первую строчку кода она здесь лишняя.
Кстати про тип выделения я нагнал, он всетаки Array, но длина всегда равна 1 почему то, хотя я выделяю несколько ячеек
 
Ответ: Работа с выделенными ячейками

Так что нужно получить и зачем третья строка?
 
Ответ: Работа с выделенными ячейками

Fog_patch сказал(а):
Так что нужно получить и зачем третья строка?

Как это что получить?! Кол-во выделенных ячеек, разве из кода это не понятно ?
 
Ответ: Работа с выделенными ячейками

Ну я ведь написал как получить кол-во ячеек?
Если нужно выяснить какая выделенная ячейка какому ряду принадлежит, то можно так написать
myR = app.Selection(1).Cells(1).Rows(1).Index
 
Ответ: Работа с выделенными ячейками

Fog_patch сказал(а):
Ну я ведь написал как получить кол-во ячеек?
Если нужно выяснить какая выделенная ячейка какому ряду принадлежит, то можно так написать
myR = app.Selection(1).Cells(1).Rows(1).Index

На JS такое не канает, я уже по всякому пробовал
 
Ответ: Работа с выделенными ячейками

Я могу легко перевести с жабы на бейсик, но обратную операцию увы...

Вот рабочий код на бейсике

Код:
main
Function main()
Set myInDesign = CreateObject("InDesign.Application")
Set myCells = myInDesign.Selection
myc = myInDesign.Selection(1).Cells.Count
myr = myInDesign.Selection(1).Cells(1).Rows(1).Index
MsgBox "выделенных ячеек: " & myc & " ряд: " & myr
end function

Сохраните как vbs.
 
Ответ: Работа с выделенными ячейками

ааааааа я тупой. Все работает и так, я [0] не поставил после selection.

Кароч можно так:
Код:
var myC=app.selection[0].cells.length;

И так :

Код:
var myC=app.selection[0].cells.count();

Мда тема получилась ниочем
 
Ответ: Работа с выделенными ячейками

Да нет. Вряд ли. Я тут ради любопытсва попробовал написать на жабе, и вот что уменя получилось (ячейки, ряд):

Код:
myC = app.selection[0].cells.length;
myR = app.selection[0].cells[0].rows[0].index
alert (myC);
alert (myR);

Не по теме:

Гы-гы. Не знаю почему, но это было очень смешно такое писать (наверно для жаба-кодеров тоже смешно такое видеть)

 
Ответ: Работа с выделенными ячейками

Вы зря редактируете сообщения. Я постоянно отвечаю на то чего уже нет. '))'
 
Ответ: Работа с выделенными ячейками

Ха, На JS всё выглядит куда компактнее. читать код проще имхо
 
Ответ: Работа с выделенными ячейками

Возможно, но если-б вы на открыли Word с VBA и начали писать глядя на Locals, у вас в принципе не было бы таких вопросов. С Locals это исключено.
 
Ответ: Работа с выделенными ячейками

Fog_patch сказал(а):
Вы зря редактируете сообщения. Я постоянно отвечаю на то чего уже нет. '))'

Айм Сорри (может вы просто слишком быстро отвечаете :)
... users can only post one message every 120 seconds.
 
Ответ: Работа с выделенными ячейками

Для тех кто смотрел тему и пишет на JS, подведу итоги.
Итак указатель на выделенные ячейки:
Код:
var myCells = app.selection[0];
Количество выделенных ячеек:
Код:
var myCellsCount=myCells.cells.length;
Количество строк в выделенных ячейках:
Код:
var myRowsCount=myCells.rows.length;
Указатель на первую строку выделения:
Код:
var myFirstRow=myCells.rows[0];
Индекс этой строки внутри всей таблицы:
Код:
var myRowIndex=myFirstRow.index;
 
Статус
Закрыто для дальнейших ответов.