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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2011, 11:17   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию VBA работа с формами

Помогите пожалуйста!

Пользовательсяка форма содержит Кнопку Выполнить, переключатели " С крайними" и "Друг с другом", поле выбора ячекк "Диапазон". В Поле диапазон указывается диапазон ячеек, заполненный числами. При нажатии кнопки "Выполнить" в каждой строке определяется минимальное и максимальное число. Если установлен флажок "С крайними" то числа меняются местами с крайними элементами строки: максимальные - с первым, минимальный с последним, если установлен флажок (переключатель)"друг с другом" то числа меняются местами друг с другом

Если кто знает помогите! очень нужно. Отблагодарю!
DeDoK вне форума Ответить с цитированием
Старый 19.02.2011, 11:51   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

И Вам здравствуйте. "Помогите" и "сделайте вместо меня" вещи радикально разные. Как же мы можем Вам помочь не видя, что у Вас не получается. Может у Вас числа не те и не так расположены... Много всяких "может". Вы нам покажите, что Вы сами сделали, а мы поможем поправить чего надо.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 19.02.2011, 13:02   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение
разбирал пример R Dmitry, обнаружил принципиальную ошибку у себя, подправил...
Вложения
Тип файла: rar Книга579.rar (15.0 Кб, 16 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 19.02.2011 в 21:43.
IgorGO вне форума Ответить с цитированием
Старый 19.02.2011, 19:59   #4
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Код:
Sub test()
Dim opt As Boolean, mx&, mn&, i&, j&, x&, n&, c&, b&
opt = True 'сюда значение переключателя
a = [a1:i10].Value 'сюда значение рефа
For i = 1 To UBound(a)
   mn = a(i, 1): mx = a(i, 1): x = 1: n = 1
    For j = 1 To UBound(a, 2)
        If mx > a(i, j) Then x = j: mx = a(i, j)
        If mn < a(i, j) Then n = j: mn = a(i, j)
    Next j
    If opt Then
    c = a(i, x): b = a(i, n): a(i, x) = b: a(i, n) = c
    Else
    c = a(i, x): b = a(i, UBound(a, 2)): a(i, x) = b: a(i, UBound(a, 2)) = c
    c = a(i, n): b = a(i, 1): a(i, n) = b: a(i, 1) = c
    End If
Next
[a1:i10] = a 'сюда значение рефа
End Sub

без формы не люблю рисовать
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 19.02.2011, 21:23   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Дима,
сделайте строчку: 5, 9, 4, 1 и обработайте своей процедурой при условии "поменять с крайними".
Код:
    Else
    c = a(i, x): b = a(i, UBound(a, 2)): a(i, x) = b: a(i, UBound(a, 2)) = c
    c = a(i, n): b = a(i, 1): a(i, n) = b: a(i, 1) = c
    End If
по моим прикидкам получится 9, 1, 4, 5
что немного расходится с условиями
Цитата:
Если установлен флажок "С крайними" то числа меняются местами с крайними элементами строки: максимальные - с первым, минимальный с последним
моя процедура дает: 1, 5, 4, 9
Когда прочитал что написано, понял - я тоже "мимо кассы" расставил значения (минимальное в начале, максимальное в конце, а надо наоборот)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 19.02.2011 в 21:27.
IgorGO вне форума Ответить с цитированием
Старый 19.02.2011, 21:33   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

По моим прикидкам из
5 9 4 1
получаеся
9 5 4 1
1 и так стоит на своем месте,9 меняется с 5


Игорь теперь только увидел твою корректировку
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 20.02.2011, 00:48   #7
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Дима,
сделайте строчку: 5, 9, 4, 1 и обработайте своей процедурой при условии "поменять с крайними".
Код:
    Else
    c = a(i, x): b = a(i, UBound(a, 2)): a(i, x) = b: a(i, UBound(a, 2)) = c
    c = a(i, n): b = a(i, 1): a(i, n) = b: a(i, 1) = c
    End If
по моим прикидкам получится 9, 1, 4, 5
что немного расходится с условиями моя процедура дает: 1, 5, 4, 9
Когда прочитал что написано, понял - я тоже "мимо кассы" расставил значения (минимальное в начале, максимальное в конце, а надо наоборот)))

да вроде все сходиться
из
5 9 4 1
получаеся
9 5 4 1
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 20.02.2011, 01:29   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

то ли лыжи не катять... то ли я чего-то не понимаю...
строчку 5, 9, 4, 1 пробовали обработать?
втянул Ваш тест, навесил кнопку на него, пробуйте, смотрите...
Вложения
Тип файла: rar Книга579.rar (16.8 Кб, 11 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 20.02.2011, 01:40   #9
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
то ли лыжи не катять... то ли я чего-то не понимаю...
строчку 5, 9, 4, 1 пробовали обработать?
втянул Ваш тест, навесил кнопку на него, пробуйте, смотрите...
да уже нашел.........
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 20.02.2011, 11:22   #10
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Утро вечера мудренее.......
Sub test()
Dim opt As Boolean, mx&, mn&, i&, j&, x&, n&, c&, b&
Dim Rng As Range, a()
opt = [l15] 'сюда значение переключателя
Set Rng = [a17:j29] 'сюда значение рефа
a = Rng.Value
For i = 1 To UBound(a)
mn = a(i, 1): mx = a(i, 1): x = 1: n = 1
For j = 1 To UBound(a, 2)
If mx < a(i, j) Then x = j: mx = a(i, j)
If mn > a(i, j) Then n = j: mn = a(i, j)
Next j
If opt Then
c = a(i, x): b = a(i, n): a(i, x) = b: a(i, n) = c
Else
If mx = a(i, UBound(a, 2)) Then
a(i, 1) = mx: a(i, UBound(a, 2)) = mn
Else
c = a(i, n): b = a(i, UBound(a, 2)): a(i, n) = b: a(i, UBound(a, 2)) = c
c = a(i, x): b = a(i, 1): a(i, x) = b: a(i, 1) = c

End If: End If
Next
Rng = a 'сюда значение рефа
End Sub
Вложения
Тип файла: zip Книга579.zip (16.4 Кб, 14 просмотров)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 20.02.2011 в 18:35.
R Dmitry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход между формами VBA julius Microsoft Office Excel 4 29.09.2010 23:30
Работа с формами Toxic Общие вопросы Delphi 8 17.09.2010 16:31
Работа с формами dscoma Microsoft Office Word 5 18.08.2010 14:09
работа с формами в VBA Excell Niк Microsoft Office Excel 4 17.06.2010 20:15
Работа с формами Claster Общие вопросы Delphi 11 01.02.2010 17:09