Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/При сравнении одинаковых переменных в условии Ложь - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При сравнении одинаковых переменных в условии Ложь (Макросы/Sub)
При сравнении одинаковых переменных в условии Ложь
Angelofdem Дата: Воскресенье, 13.03.2016, 12:22 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Задача вывести данные через запятую в строку, отфильтровав по типу и дням недели.
Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. MsgBox f MsgBox r выдают окна с одинаковыми данными
В чем может быть причина?
Заранее благодарю.
[vba]
Код
Sub Выборка()
  Dim i&, j&, n&, s$, d$, f$, x$, r$, g$
n = Range("Выборка!A" & Cells.Rows.Count).End(xlUp).Row
For j = 2 To n
    s = ""
    For i = 2 To 7
    d = WeekdayName(Weekday(Range("Текущая_неделя!C" & i), vbMonday)) 'присваиваю день недели из столбца С
    x = Range("Текущая_неделя!A" & i) 'присваиваю тип
    f = x & Chr(32) & d 'присваиваю день недели
    r = Range("Выборка!A" & j) 'присваиваю фильтр
    MsgBox f
    MsgBox r
    'g = (If f = r then "совпадает") Пытаюсь проверить равны ли значения переменных. Выдает ошибку
    'MsgBox g будет ли работать?
            If f = r Then 'сдесь я пытаюсь сравнить переменные
            s = s & "," & Chr(32) & Range("Текущая_неделя!B" & i)
            Else: s = Chr(32) & Chr(32) & x & Chr(32) & "отсутствуют в день" & Chr(32) & d 'тут сам допилю
     End If
   Next i
   MsgBox s 'эта команда всегда выводит пустое окно. Вывод: условие не соблюдается ни одного раза
    Range("Выборка!B" & j) = Right(s, Len(s) - 2) '
    Next j
   
End Sub
[/vba]
К сообщению приложен файл: template.xlsm(20Kb)
 
Ответить
СообщениеЗадача вывести данные через запятую в строку, отфильтровав по типу и дням недели.
Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. MsgBox f MsgBox r выдают окна с одинаковыми данными
В чем может быть причина?
Заранее благодарю.
[vba]
Код
Sub Выборка()
  Dim i&, j&, n&, s$, d$, f$, x$, r$, g$
n = Range("Выборка!A" & Cells.Rows.Count).End(xlUp).Row
For j = 2 To n
    s = ""
    For i = 2 To 7
    d = WeekdayName(Weekday(Range("Текущая_неделя!C" & i), vbMonday)) 'присваиваю день недели из столбца С
    x = Range("Текущая_неделя!A" & i) 'присваиваю тип
    f = x & Chr(32) & d 'присваиваю день недели
    r = Range("Выборка!A" & j) 'присваиваю фильтр
    MsgBox f
    MsgBox r
    'g = (If f = r then "совпадает") Пытаюсь проверить равны ли значения переменных. Выдает ошибку
    'MsgBox g будет ли работать?
            If f = r Then 'сдесь я пытаюсь сравнить переменные
            s = s & "," & Chr(32) & Range("Текущая_неделя!B" & i)
            Else: s = Chr(32) & Chr(32) & x & Chr(32) & "отсутствуют в день" & Chr(32) & d 'тут сам допилю
     End If
   Next i
   MsgBox s 'эта команда всегда выводит пустое окно. Вывод: условие не соблюдается ни одного раза
    Range("Выборка!B" & j) = Right(s, Len(s) - 2) '
    Next j
   
End Sub
[/vba]

Автор - Angelofdem
Дата добавления - 13.03.2016 в 12:22
МВТ Дата: Воскресенье, 13.03.2016, 12:29 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 475
Репутация: 135 ±
Замечаний: 0% ±

Excel 2007
Как-то запутанно у Вас... Попробуйте цикл задать так [vba]
Код
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
[/vba]
 
Ответить
СообщениеКак-то запутанно у Вас... Попробуйте цикл задать так [vba]
Код
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
[/vba]

Автор - МВТ
Дата добавления - 13.03.2016 в 12:29
Gustav Дата: Воскресенье, 13.03.2016, 12:57 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1211
Репутация: 484 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. MsgBox f MsgBox r выдают окна с одинаковыми данными

Начнём с того, что в ячейке A2 на листе "Выборка" находится фраза "Запрос на обслуживание cреда" с маленькой ЛАТИНСКОЙ буквой "c" в слове "cреда" (код символа 99, а не 241 как у русской)...


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Воскресенье, 13.03.2016, 12:58
 
Ответить
Сообщение
Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. MsgBox f MsgBox r выдают окна с одинаковыми данными

Начнём с того, что в ячейке A2 на листе "Выборка" находится фраза "Запрос на обслуживание cреда" с маленькой ЛАТИНСКОЙ буквой "c" в слове "cреда" (код символа 99, а не 241 как у русской)...

Автор - Gustav
Дата добавления - 13.03.2016 в 12:57
Angelofdem Дата: Воскресенье, 13.03.2016, 13:42 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо за столь быстрый ответ. Действительно упустил из виду регистр исправил первую букву всех дней недели на листе выборка на маленькие в Кириллице. Не понимаю как она могла стать Латинской. В итоге результат прежний.
Попробовал и с циклом получилось следующее выдают ошибку "method range of object global failed"
Прикрепил файл с исправлениями
Прошу не судить строго, это мой первый макрос.
[vba]
Код
Sub Выборка()
  Dim i&, j&, n&, s$, d$, f$, x$, r$, g$
n = Range("Выборка!A" & Cells(Rows.Count, 1)).End(xlUp).Row
MsgBox n
For j = 2 To n
    s = ""
    For i = 2 To 10
    d = WeekdayName(Weekday(Range("Текущая_неделя!C" & i), vbMonday)) 'присваиваю день недели из столбца С
    x = Range("Текущая_неделя!A" & i) 'присваиваю тип
    f = x & Chr(32) & d 'присваиваю день недели
    r = Range("Выборка!A" & j) 'присваиваю фильтр
    MsgBox f
    MsgBox r
    'g = (If f = r then "совпадает") Пытаюсь проверить равны ли значения переменных. Выдает ошибку
    'MsgBox g будет ли работать?
            If f = r Then 'сдесь я пытаюсь сравнить переменные
            s = s & "," & Chr(32) & Range("Текущая_неделя!B" & i)
            Else: s = Chr(32) & Chr(32) & x & Chr(32) & "отсутствуют в день" & Chr(32) & d 'тут сам допилю
     End If
   Next i
   MsgBox s 'эта команда всегда выводит пустое окно. Вывод: условие не соблюдается ни одного раза
    Range("Выборка!B" & j) = Right(s, Len(s) - 2) '
    Next j
   
End Sub
[/vba]
К сообщению приложен файл: 0548792.xlsm(21Kb)
 
Ответить
СообщениеСпасибо за столь быстрый ответ. Действительно упустил из виду регистр исправил первую букву всех дней недели на листе выборка на маленькие в Кириллице. Не понимаю как она могла стать Латинской. В итоге результат прежний.
Попробовал и с циклом получилось следующее выдают ошибку "method range of object global failed"
Прикрепил файл с исправлениями
Прошу не судить строго, это мой первый макрос.
[vba]
Код
Sub Выборка()
  Dim i&, j&, n&, s$, d$, f$, x$, r$, g$
n = Range("Выборка!A" & Cells(Rows.Count, 1)).End(xlUp).Row
MsgBox n
For j = 2 To n
    s = ""
    For i = 2 To 10
    d = WeekdayName(Weekday(Range("Текущая_неделя!C" & i), vbMonday)) 'присваиваю день недели из столбца С
    x = Range("Текущая_неделя!A" & i) 'присваиваю тип
    f = x & Chr(32) & d 'присваиваю день недели
    r = Range("Выборка!A" & j) 'присваиваю фильтр
    MsgBox f
    MsgBox r
    'g = (If f = r then "совпадает") Пытаюсь проверить равны ли значения переменных. Выдает ошибку
    'MsgBox g будет ли работать?
            If f = r Then 'сдесь я пытаюсь сравнить переменные
            s = s & "," & Chr(32) & Range("Текущая_неделя!B" & i)
            Else: s = Chr(32) & Chr(32) & x & Chr(32) & "отсутствуют в день" & Chr(32) & d 'тут сам допилю
     End If
   Next i
   MsgBox s 'эта команда всегда выводит пустое окно. Вывод: условие не соблюдается ни одного раза
    Range("Выборка!B" & j) = Right(s, Len(s) - 2) '
    Next j
   
End Sub
[/vba]

Автор - Angelofdem
Дата добавления - 13.03.2016 в 13:42
RAN Дата: Воскресенье, 13.03.2016, 14:15 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Не разбирался, что и зачем. Но что-то работает.
[vba]
Код
Sub Выборка()
  Dim i&, j&, n&, s$, d$, f$, x$, r$, g$
n = Sheets("Выборка").Cells(Rows.Count, 1).End(xlUp).Row
MsgBox n
For j = 2 To n
    s = ""
    For i = 2 To 10
    d = WeekdayName(Weekday(Sheets("Текущая_неделя").Range("C" & i), vbMonday)) 'присваиваю день недели из столбца С
    x = Range("Текущая_неделя!A" & i) 'присваиваю тип
    f = x & Chr(32) & d 'присваиваю день недели
    r = Range("Выборка!A" & j) 'присваиваю фильтр
    MsgBox f
    MsgBox r
    'g = (If f = r then "совпадает") Пытаюсь проверить равны ли значения переменных. Выдает ошибку
    'MsgBox g будет ли работать?
            If f = r Then 'сдесь я пытаюсь сравнить переменные
            s = s & "," & Chr(32) & Sheets("Текущая_неделя").Range("B" & i)
            Else: s = Chr(32) & Chr(32) & x & Chr(32) & "отсутствуют в день" & Chr(32) & d 'тут сам допилю
     End If
   Next i
   MsgBox s 'эта команда всегда выводит пустое окно. Вывод: условие не соблюдается ни одного раза
    Range("Выборка!B" & j) = Right(s, Len(s) - 2) '
    Next j
   
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе разбирался, что и зачем. Но что-то работает.
[vba]
Код
Sub Выборка()
  Dim i&, j&, n&, s$, d$, f$, x$, r$, g$
n = Sheets("Выборка").Cells(Rows.Count, 1).End(xlUp).Row
MsgBox n
For j = 2 To n
    s = ""
    For i = 2 To 10
    d = WeekdayName(Weekday(Sheets("Текущая_неделя").Range("C" & i), vbMonday)) 'присваиваю день недели из столбца С
    x = Range("Текущая_неделя!A" & i) 'присваиваю тип
    f = x & Chr(32) & d 'присваиваю день недели
    r = Range("Выборка!A" & j) 'присваиваю фильтр
    MsgBox f
    MsgBox r
    'g = (If f = r then "совпадает") Пытаюсь проверить равны ли значения переменных. Выдает ошибку
    'MsgBox g будет ли работать?
            If f = r Then 'сдесь я пытаюсь сравнить переменные
            s = s & "," & Chr(32) & Sheets("Текущая_неделя").Range("B" & i)
            Else: s = Chr(32) & Chr(32) & x & Chr(32) & "отсутствуют в день" & Chr(32) & d 'тут сам допилю
     End If
   Next i
   MsgBox s 'эта команда всегда выводит пустое окно. Вывод: условие не соблюдается ни одного раза
    Range("Выборка!B" & j) = Right(s, Len(s) - 2) '
    Next j
   
End Sub
[/vba]

Автор - RAN
Дата добавления - 13.03.2016 в 14:15
Angelofdem Дата: Воскресенье, 13.03.2016, 16:20 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо Вам, всё работает. Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе, но это скорее всего я не углядел. Могу я вас как-то отблагодарить?
 
Ответить
СообщениеСпасибо Вам, всё работает. Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе, но это скорее всего я не углядел. Могу я вас как-то отблагодарить?

Автор - Angelofdem
Дата добавления - 13.03.2016 в 16:20
StoTisteg Дата: Воскресенье, 13.03.2016, 16:43 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе

Lcase в If'е спасёт отца русской демократии yes


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 13.03.2016, 16:43
 
Ответить
Сообщение
Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе

Lcase в If'е спасёт отца русской демократии yes

Автор - StoTisteg
Дата добавления - 13.03.2016 в 16:43
Angelofdem Дата: Воскресенье, 13.03.2016, 16:52 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе

Lcase в If'е спасёт отца русской демократии yes

Спасибо и Вам. Если неполадка вновь заявит о себе, последую Вашему совету. yes
 
Ответить
Сообщение
Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе

Lcase в If'е спасёт отца русской демократии yes

Спасибо и Вам. Если неполадка вновь заявит о себе, последую Вашему совету. yes

Автор - Angelofdem
Дата добавления - 13.03.2016 в 16:52
RAN Дата: Воскресенье, 13.03.2016, 18:30 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Могу я вас как-то отблагодарить?

Спасибо в данном случае вполне достаточно. Это не раздел "работа".


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Могу я вас как-то отблагодарить?

Спасибо в данном случае вполне достаточно. Это не раздел "работа".

Автор - RAN
Дата добавления - 13.03.2016 в 18:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При сравнении одинаковых переменных в условии Ложь (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!