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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 02:49   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Аналогично странно и неправильно ведет себя макрос

Доброй ночи, уважаемые форумчане! Второй раз за последние семь дней сталкиваюсь с неправильной работой кода. Суть в чем. Есть табличка, куда заносятся данные пассажиров. Есть юзерформа, с помощью которой хочу переносить пассажира из каюты в каюту. Юзерформа из двух полей - Откуда и Куда. В поле Куда при выборе в комбобоксе номера каюты в текстбоксах должны отображаться фамилии пассажиров если есть или чистые поля если нету. Проблема как раз с отображением. При такой структуре таблицы и вот таком коде:
Код:
Private Sub ComboBox4_Change()
Dim sh As Worksheet
    Set sh = Sheets("База")
For j = 11 To 29

If ComboBox4.text = sh.Cells(j, 10).Value And sh.Cells(j + 3, 12).Value = 4 Then
    TextBox2 = sh.Cells(j, 2).Value
    TextBox3 = sh.Cells(j + 1, 2).Value
    TextBox4 = sh.Cells(j + 2, 2).Value
    TextBox5 = sh.Cells(j + 3, 2).Value
ElseIf ComboBox4.text = sh.Cells(j, 10).Value And sh.Cells(j + 3, 12).Value <> 4 Then
    TextBox2 = sh.Cells(j, 2).Value
    TextBox3 = sh.Cells(j + 1, 2).Value
    TextBox4 = sh.Cells(j + 2, 2).Value
    TextBox5 = "Не предусмотрен"
Exit For
End If
Next

End Sub
выбираю первую каюту под номером 4. Но в текстбоксах под пассажиром номер 1 отображается пассажир 2 конкретно Иванов. То есть, если j - 11-я строка, то TextBox2 должен отображать значение ячейки В11, а отображается В12. И так для всех четырехместных кают. Для трехместных же все в порядке. Либо я затупил по крупному, либо на фоне предыдущих мытарств можно уже подумать, что что-то не так с Excel'ем.
Посмотрите, пожалуйста, и выдайте мне вердикт. Все во вложении.
Заранее спасибо!
Вложения
Тип файла: rar таблица.rar (32.7 Кб, 12 просмотров)
strannick вне форума Ответить с цитированием
Старый 20.11.2012, 10:22   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Не понял правда для чего тут for и next
поменял местами условия if, вроде нормально сработало
Код:
Private Sub ComboBox4_Change()
Dim sh As Worksheet
    Set sh = Sheets("База")
For j = 11 To 29
If ComboBox4.Text = sh.Cells(j, 10).Value And sh.Cells(j + 3, 12).Value <> 4 Then
    TextBox2 = sh.Cells(j, 2).Value
    TextBox3 = sh.Cells(j + 1, 2).Value
    TextBox4 = sh.Cells(j + 2, 2).Value
    TextBox5 = "Не предусмотрен"
ElseIf ComboBox4.Text = sh.Cells(j, 10).Value And sh.Cells(j + 3, 12).Value = 4 Then
    TextBox2 = sh.Cells(j, 2).Value
    TextBox3 = sh.Cells(j + 1, 2).Value
    TextBox4 = sh.Cells(j + 2, 2).Value
    TextBox5 = sh.Cells(j + 3, 2).Value
Exit For
End If
Next

End Sub
в Вашем коде, при пошаговом выполнении, при выборе 4 - код проходит 2 раза, т.е. выполняется if (правильно) , но затем возвращается и выполгяет условие elseif (уже неправильно)
что-то Вы тут намудрили, проверяйте.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 20.11.2012, 11:14   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Понял, сейчас гляну. Дело в том, что в практически аналогичном случае (в другой форме, куда выводятся также данные пассажиров) при таком же коде все срабатывает нормально. А тут почему-то нет. Поэтому Буду копаться. Спасибо за подсказку.
strannick вне форума Ответить с цитированием
Старый 20.11.2012, 20:48   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Дело в том, что в практически аналогичном случае (в другой форме, куда выводятся также данные пассажиров) при таком же коде все срабатывает нормально. А тут почему-то нет.
да уж...
Напомнило анекдот про "аналогичный случай"
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 21.11.2012, 04:04   #5
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Анекдот такой не знаю))) А с макросом порядок. При перестановке условий работает как надо. Спасибо! Но, в общем-то, причина не ясна.
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ноут странно себя ведет feesta Помощь студентам 1 29.05.2011 23:08
неправильно рабтает макрос Olya1985 Microsoft Office Excel 6 23.02.2011 22:20
Кулеры на моём БП ведут себя странно Altera Компьютерное железо 0 22.09.2010 17:37
Почему графика ведет себя так: Иллидан Общие вопросы Delphi 6 10.10.2008 00:13