Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с Macros для обработки ячеек, вопросы новичка 
V
    Опции темы
Edd
Дата 19.3.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



У меня будет несколько вопросов.
1) В TextBox пользователь вводит диапозон ячеек которые будут обрабатыватся. Примерно так: "A1:G9".
Далее кликаем на кнопку.
Вопрос как узнать номера первой ячейки и последней?
Например: А1 это (1,1), а G9=(7,9).   Надо определить, что x1=1;y1=1;x2=7;y2=9; (x1,....y2 - переменные)
Это надо, чтобы потом работать так.
Код

dim i,k as integer
....
for i=x1 to x2
 for k=y1 to y2
q=Cells(i, k).Value
...

Надо обрабатывать каждый символ, или есть какаято функция?

                
PM MAIL   Вверх
Genyaa
Дата 19.3.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Усердный
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11



Например, так:

rr = "A1:G9" 'присвоить можно любым способом - это только пример
x1 = Range(rr).Row
y1 = Range(rr).Column
x2 = Range(rr).Row + Range(rr).Rows.Count - 1
y2 = Range(rr).Column + Range(rr).Columns.Count - 1


--------------------
Всякое решение плодит новые проблемы.
PM WWW   Вверх
Akina
Дата 20.3.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Получить в числах адрес первой ячейки можно с помощью 

Range.Address(ReferenceStyle:=xlR1C1)

Для А1 она даст R1C1, соответственно Row и Column для НАЧАЛЬНОЙ ячейки диапазона равны 1. Аналогично для B3 она даст R3C2 (строка 3 колонка 2). Осталось выделить цифири - но с этим, полагаю, ты сам разберешься, это просто.

Для получения количества строк и колонок во введенном диапазоне используешь Range.Rows.Count и Range.Columns.Count. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Edd
Дата 20.3.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Очень хорошо! Работает, спасибо.
Реализовал следующим методом:
Код

rr = TextBox1.Text 'тута "A1:E5" например введено
x1 = Range(rr).Row
y1 = Range(rr).Column
x2 = Range(rr).Row + Range(rr).Rows.Count - 1
y2 = Range(rr).Column + Range(rr).Columns.Count - 1


2) Вопрос следующий.
Пользователь помечает ячейки (например "A1:E5") в которых будут производиться вычесления.
По нажатии на кнопку, помеченные ячейки должны вписатся в TextBox1.Text как "A1:E5".
Как это реализовать?
PM MAIL   Вверх
Genyaa
Дата 20.3.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Усердный
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11



Цитата(Edd @  20.3.2007,  19:58 Найти цитируемый пост)
помеченные ячейки должны вписатся в TextBox1.Text как "A1:E5".


TextBox1.Text = Selection.Address(False, False, xlA1)

--------------------
Всякое решение плодит новые проблемы.
PM WWW   Вверх
Edd
Дата 21.3.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



 smile Спасибо! Пока вопросов нет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0722 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.