Задача вывести данные через запятую в строку, отфильтровав по типу и дням недели. Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. 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]
Задача вывести данные через запятую в строку, отфильтровав по типу и дням недели. Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. 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
Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. MsgBox f MsgBox r выдают окна с одинаковыми данными
Начнём с того, что в ячейке A2 на листе "Выборка" находится фраза "Запрос на обслуживание cреда" с маленькой ЛАТИНСКОЙ буквой "c" в слове "cреда" (код символа 99, а не 241 как у русской)...
Пытаюсь сравнить переменные одинаковые на вид, и ничего не выходит. MsgBox f MsgBox r выдают окна с одинаковыми данными
Начнём с того, что в ячейке A2 на листе "Выборка" находится фраза "Запрос на обслуживание cреда" с маленькой ЛАТИНСКОЙ буквой "c" в слове "cреда" (код символа 99, а не 241 как у русской)...Gustav
Спасибо за столь быстрый ответ. Действительно упустил из виду регистр исправил первую букву всех дней недели на листе выборка на маленькие в Кириллице. Не понимаю как она могла стать Латинской. В итоге результат прежний. Попробовал и с циклом получилось следующее выдают ошибку "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]
Спасибо за столь быстрый ответ. Действительно упустил из виду регистр исправил первую букву всех дней недели на листе выборка на маленькие в Кириллице. Не понимаю как она могла стать Латинской. В итоге результат прежний. Попробовал и с циклом получилось следующее выдают ошибку "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
Не разбирался, что и зачем. Но что-то работает. [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
Спасибо Вам, всё работает. Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе, но это скорее всего я не углядел. Могу я вас как-то отблагодарить?
Спасибо Вам, всё работает. Со Средой опять вышла неприятная ситуация, решилась принудительной заменой первой буквы на втором листе, но это скорее всего я не углядел. Могу я вас как-то отблагодарить?Angelofdem