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

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

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

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

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

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

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Забыл упомянуть, в VBA я совсем недавно, поэтому мне не удаётся понять, что этот код должен делать
Если не затруднить не могли бы вы разъяснить, что делает строка ComboBox1.AddItem wb.name (особенно, что "wb" вообще такое); как я понял строка Me.ComboBox2.Clear должна очистить ComboBox2, но тогда зачем тут "Me."; также не понял строку Me.ComboBox2.AddItem sh.Name ("sh").

А вообще решил поменять RefEdit на что-то другое, и в голову пришёл CommandButton, после нажатия на который, открывается Application.InputBox type 8, в который вводится диапазон, а затем Caption меняется на значение этого диапазона (чтоб пользователь видел, что он ввёл), но, как всегда, появились проблемы:

Во-первых, не получается изменить CommandButton.Caption
Во-вторых, не знаю как из Application.InputBox вытянуть значение
В-третьих, как значение Application.InputBox перенести в события кнопки CommandButton1 (Кнопка RUN) там где Set x = Range( а что тут не знаю )

Всё о чём додумался, но не работает
Код:
Private Sub CommandButton1_Click()
Dim x, y As Range
Dim row, col As Integer
Set x = Range()
Set y = Range()
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

Private Sub CommandButton2_Click()
Dim x1 As Range, add1 As String
Set x1 = Application.InputBox(prompt:="Введите диапазон", Type:=8)
add1 = x1.Value
CommandButton2.Caption = add1
End Sub

Private Sub CommandButton3_Click()
Dim y1 As Range, add2 As String
Set y1 = Application.InputBox(prompt:="Введите диапазон", Type:=8)
add2 = y1.Value
CommandButton3.Caption = add2
End Sub
Всё это я делаю просто чтоб чему-то научиться в VBA

Последний раз редактировалось Thez; 24.02.2014 в 20:13.
Thez вне форума Ответить с цитированием
Старый 24.02.2014, 20:42   #12
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Thez Посмотреть сообщение
Всё это я делаю просто чтоб чему-то научиться в VBA
Учитесь на примере
Код:
Dim x  As Range, y As Range

Private Sub CommandButton1_Click()
Dim row, col As Integer
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

Private Sub CommandButton2_Click()
Set x = Application.InputBox(prompt:="Введите диапазон", Type:=8)
CommandButton2.Caption = x.Address
End Sub

Private Sub CommandButton3_Click()
Set y = Application.InputBox(prompt:="Введите диапазон", Type:=8)
CommandButton3.Caption = y.Address
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.02.2014, 20:54   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да, без me можно обойтись.
Вообще там пришлось код подшлифовать, чтоб работало.
Вот пробуйте.

Да, рефедит оставил - вполне можно использовать, но в общем не важно.
Я добавил комбобоксы, в которых можно выбрать что активизировать, раз уж в вин7 иначе никак не переключиться (не могу проверить, но верю )
Чтоб видеть что выбрал в итоге юзер - можно ещё лейблов над рефедитом добавить.
Вложения
Тип файла: rar Книга1.rar (21.4 Кб, 9 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.02.2014 в 20:58.
Hugo121 вне форума Ответить с цитированием
Старый 24.02.2014, 21:37   #14
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
(не могу проверить, но верю )
.
Игорь,забыл, что говорил Броневой в <<17 мгновений веcны>>.
Проверил.Работает нормально на W7 32 и W7 64.
Никаких отличий от ХР нет
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.02.2014, 01:54   #15
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ну значит есть уже два варианта - или расположить окна как на моём скриншоте и не мудрить, или выбирать/активировать комбобоксами. Или оба сразу - одно другому не мешает.
Вот только я не понял - в первом варианте когда видны сразу два окна - range(refedit) срабатывало корректно, на разные книги. Когда видно одно окно - оба range(refedit) обращались к последней книге, мне пришлось код менять.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2014, 09:13   #16
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Код
Большое спасибо, всё работает, в коде разобрался

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
в вин7 иначе никак не переключиться (не могу проверить, но верю )
Переключиться уже получилось с помощью ShowModal = False, я об этом уже написал
Большое спасибо, ваш вариант работает даже если ShowModal = True , но всё же не понял, что значит "wb" в For Each wb In Workbooks, и, что значит "sh" в For Each sh In Workbooks(ComboBox1.Value).Workshee ts; "wb" и "sh" - это названия переменных или что-то другое (вроде сокращений от WorkBooks и WorkSheets)? В остальном вроде разобрался.

Цитата:
Сообщение от doober Посмотреть сообщение
Никаких отличий от ХР нет
Может у меня что-то не так где-то в настройках, но расположить окна как у Hugo121 на скриншоте никак не могу, если переместить или поменять размер одного окна Excel, то оба окна меняются.

Последний раз редактировалось Thez; 25.02.2014 в 09:20.
Thez вне форума Ответить с цитированием
Старый 25.02.2014, 10:14   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

"wb" и "sh" - это названия переменных
Но т.к. в данном случае перебираем объекты (для каждой книги из книг, для каждого листа из листов), то это объектные переменные. И их так бы нужно и объявить. Имя совершенно не важно, но как-то привязать его к объекту - это правила "хорошего тона".
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2014, 10:18   #18
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...расположить окна как у Hugo121 на скриншоте никак не могу...
Выполните
Код:
Windows.Arrange ArrangeStyle:=xlCascade
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.02.2014, 17:39   #19
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию

Появилась ещё одна проблемка - если активировать Application.Inputbox, а потом нажать Отмена или крестик в углу, то выскочит ошибка Run-time error '424'.
Thez вне форума Ответить с цитированием
Старый 25.02.2014, 17:43   #20
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а если проверить что с Inputbox ничего не получено и принять меры - то ничего особого не случиться.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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