Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2014, 17:01   #1
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию RefEdit по 2 разным книгам

Здравствуйте, с помощью формы, в которой есть 2 RefEdit'а и 1 CommandButton, нужно в первый RefEdit ввести диапазон с одной книги, а во второй RefEdit с другой книги, после нажатия CommandButton ячейки диапазонов сравниваются.

Мои наработки действий после нажатия на CommandButton, но работает только по одной книге.
Код:
Private Sub CommandButton1_Click()
Dim x, y As Range
Dim row, col As Integer
Set x = Range(RefEdit1.Value)
Set y = Range(RefEdit2.Value)
row = x.Rows.Count
col = x.Columns.Count
For i = 1 To row
    For j = 1 To col
        If (x.Cells(i, j) = y.Cells(i, j)) Then MsgBox x.Cells(i, j).address & " = " & y.Cells(i, j).address
    Next j
Next i
Unload Me
End Sub
Нужно только, чтоб можно было выбрать диапазон с другой книги.

Если через RefEdit нельзя по двум книгам работать, то прошу подсказать чем его можно заменить, но чтоб так же, через форму и с выделением диапазона.

Последний раз редактировалось Thez; 23.02.2014 в 18:02.
Thez вне форума Ответить с цитированием
Старый 23.02.2014, 19:47   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Покажите пример в файле.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.02.2014, 21:39   #3
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию

Работаю на MS Office 2010.
В архиве 2 файла: Книга1.xlsm (со встроенным макросом) и Книга2.xlsx
В обоих книгах на первом листе небольшой столбец с цифрами. Если запустить макрос с Книги1 (название макроса - sht), то откроется форма, в которой 2 RefEdit окна и кнопка RUN, нужно в одном RefEdit выделить столбец с первой книги, а во второй RefEdit выделить столбец со второй книги, и нажать RUN, чтобы макрос проверил ячейки в диапазоне на равенство. Но проблема в том, что я не могу поместить в RefEdit диапазон со второй книги (после нажатия на окно RefEdit в форме, появляется возможность выделить диапазон, но только в той книге, из которой этот макрос запускается).

Если оба столбца находятся в одной книге, то макрос работает как надо, но мне нужно, чтоб именно в разных книгах столбцы находились.

Старался как можно подробнее объяснить, что нужно (То есть, нужна возможность выбирать диапазон с разных книг).

PS Вроде как файлы с расширением .xlsm тут не любят, но иначе не вижу вообще зачем нужен этот пример, так как кроме макроса в нём находится просто небольшой столбец любых чисел, который нужно сравнить с ещё одним небольшим столбцом только в другой книге.
Вложения
Тип файла: zip Documents.zip (25.7 Кб, 13 просмотров)
Thez вне форума Ответить с цитированием
Старый 23.02.2014, 22:07   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Попробуйте так:
Изображения
Тип файла: jpg Image 9.jpg (24.0 Кб, 147 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.02.2014, 07:39   #5
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию

Видимо вы работаете на Windows XP, но на Windows 7 такого не получается, окна обоих книг становятся взаимосвязанными, и, если менять расположение или размер одного окна, то меняется у обоих окон. Поэтому, не получается разместить 2 окна Excel на одном экране (как у вас на скриншоте). Одновременно можно видеть только один из них. А если запустить макрос, то тут уже даже не получается переключиться на другое окно Excel (другую книгу).
Thez вне форума Ответить с цитированием
Старый 24.02.2014, 10:15   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да, это снято на ХР.
Ну тогда как вариант - сделать дополнительные элементы активации нужных книг и листов.

"зачем нужен этот пример" - да хоть для того, чтоб мне его не делать, чтоб показать тот скриншот. Не было бы примера - не было бы скриншота...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.02.2014 в 10:21.
Hugo121 вне форума Ответить с цитированием
Старый 24.02.2014, 17:07   #7
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию

Проблема решена - с помощью свойства формы ShowModal могу вводить диапазоны с других книг.
Но появилась новая проблема - после активации RefEdit в форме, можно выбрать диапазон, но нельзя переключиться на саму форму (как при появлении диалогового окна - нельзя ни на что другое переключиться, пока не закроешь это диалоговое окно). Таким образом, после выделения диапазона не могу ни на что переключиться: ни нажать кнопку RUN, ни даже закрыть весь документ крестиком в углу.
Thez вне форума Ответить с цитированием
Старый 24.02.2014, 17:47   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А что вам мешает объявить переменные уровня модуля,и по очереди брать диапазоны
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.02.2014, 18:24   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я в одной задаче так и делал - в макросе 4 последовательных инпутбокса type 8 где юзер указывает диапазоны разных книг.
Но тоже сперва нужно было расположить книги "отдельными окнами".
А в этой задаче, если так не получается, можно добавить два комбобокса, где в одном юзер указывает книгу (из открытых, или файл), в другом лист выбранной книги, он активизируется, далее рефедит без проблем отрабатывает по одной активной книге.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.02.2014, 18:35   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Грубо так, не причёсывал (хорошо что есть пример )
Код:
Private Sub UserForm_Initialize()
    For Each wb In Workbooks
        ComboBox1.AddItem wb.Name
    Next
End Sub

Private Sub ComboBox1_Change()
    Me.ComboBox2.Clear
    For Each sh In Workbooks(ComboBox1.Value).Worksheets
        Me.ComboBox2.AddItem sh.Name
    Next
End Sub

Private Sub ComboBox2_Change()
    Workbooks(ComboBox1.Value).Activate
    Workbooks(ComboBox1.Value).Sheets(ComboBox2.Value).Select
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование по книгам kopaevan Помощь студентам 5 11.04.2012 22:35
обращение к разным книгам Bape}l{ka Microsoft Office Excel 18 27.06.2011 09:42
RefEdit. Ограничение на ввод данных maksim_serg Microsoft Office Excel 10 31.03.2010 12:13
как привязать одну кнопку к разным книгам akd2009 Microsoft Office Excel 2 02.02.2010 16:26
Возможно ли самому по книгам изучить С++ покаЧайник Свободное общение 11 07.10.2009 18:42