На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Организуем VBA-FAQ! Если у Вас есть предложения, выскажитесь здесь: Пишем FAQ, интересно Ваше мнение
Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки

1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость - сестра таланта.
3. Не забывайте использовать теги [сode=vba] ...текст программы... [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
Модераторы: Old Bat, MIF
  
> Найти ячейку по координатам, (x, y)
    Есть фигура (Shape), нужно найти ячейку в её центре. Есть TopLeftCell, есть RightBottomCell, а вот CenterCell нет, а мне надо :)
    Короче, мне нужно найти ячейку по координатам (я могу взять у Shape Left+Widht/2 и Top+Height/2). Как это сделать?
    Вариант взять среднее (Row, Column) между TopLeftCell и RightBottomCell не годится, результат кривой (часто находится не та ячейка).
      По-моему, задача безнадёжная - ведь ещё и размеры ячеек имеют право быть разными, одни шире, другие выше... думаю, надо переходить от ячеек к пиксельным координатам в окне, и уже по ним искать центр и ячейку, поверх которой этот центр находится.
        Короче, функции, которая возвращает ячейку по координатам, нет, так?

        Добавлено
        В общем, сделал перебором ячеек (Range) от TopLeftCell до RightBottomCell.
        И дальше проверял нахождение нужной координаты внутри диапазона Left ... Left+Width.
          Цитата Jin X @
          В общем, сделал перебором ячеек (Range) от TopLeftCell до RightBottomCell.
          И дальше проверял нахождение нужной координаты внутри диапазона Left ... Left+Width.

          А Width зачем? не проще было тупо смотреть - если перескочил, то берёшь предыдущую, иначе запоминаешь текущую и идёшь к следующей. Сперва по колонкам, потом по строкам.
          Или у тебя там объединённые ячейки?
            Akina, чем это проще?
              Да тем, что меньше за свойства дёргать.
              В предлагаемом варианте будет 2 цикла, где каждая ячейка дёргается за одно свойство (всего - максимум 2*N).
              Тогда как в твоём варианте - цикл один, а свойств ты дёргаешь по 4, т.е. максимум (4*N).
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0194 ]   [ 15 queries used ]   [ Generated: 28.09.21, 05:30 GMT ]