powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
4 сообщений из 4, страница 1 из 1
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
    #32726453
TreeYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Решаемf ли с помощью VBA Excel
проблема ПОИСКА, пока  НЕ РЕШАЕМО.
Что требуется:
в колокне ‘K’  находится название месяца,
например, “январь” …  “декабрь”
В соседней колонке справа, т.е. “L” находится названия
районов, допустим, Орехово-Зуевский, Одинцовский,
Наро-Фоминский.
Каждый месяц в лист заносится  9  строк по каждому району,
в результате фрагмент имеет вид :

сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский
сентябрь   Наро-Фоминский

октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский
октябрь   Наро-Фоминский

октябрь   Одинцовский
октябрь   Одинцовский
октябрь   Одинцовский

В коде название месяца ищется правильно,
НО НАЗВАНИЕ РАЙОНА ИЩЕТСЯ НЕ ВСЕГДА.
Это уже второй алгоритм, более простой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Dim row As Integer
 Dim col As Integer
    row =  2  ‘ поиск начинаю со второй строки
    col =  11  ‘  номер столба “K”
    
    Cells(row, col).Select  ' choose cell into sheet,т.е. 'K1' 
    Dim m_sMonth As String
    Dim m_sRegion As String
    Dim m_sTemp As String
    
‘ выбираю название месяца из ComboBox на диалоговом окне
 m_sMonth = ComboBox1.Value
 ‘ выбираю название района из ComboBox на диалоговом окне
 m_sRegion = ComboBox2.Value

    For i =  1  To m_iNumberLastRow   ' M1: 
	‘ поиск названия  МЕСЯЦА
       If Trim(Cells(row, col).Value) = Trim(m_sMonth) Then   ' M2: 
		‘ поиск названия РАЙОНА
        If Trim(ActiveCell.Offset( 0 ,  1 ).Value) = Trim(m_sRegion) Then   ' M3: 
            MsgBox "месяц " & m_sMonth & vbNewLine & _
            "название района " & m_sRegion & vbNewLine & _
            "найдено"
            Exit Sub
        End If   ' end M3: 
    End If   ' end M2: 
    row = row +  1  
   Next i  ' end M1:


ПОЧЕМУ НЕ РАБОТАЕТ второй if и как выйти
из ситуации ?:

Код: plaintext
1.
2.
3.
4.
5.
If Trim(ActiveCell.Offset( 0 ,  1 ).Value) = Trim(m_sRegion) Then   ' M3: 
            MsgBox "месяц " & m_sMonth & vbNewLine & _
            "название района " & m_sRegion & vbNewLine & _
            "найдено"
            Exit Sub
End If  



СПАСИБО
...
Рейтинг: 0 / 0
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
    #32726517
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПОЧЕМУ НЕ РАБОТАЕТ второй if
и как выйти из ситуации ?
Если без "и", проще ответить только на второй вопрос:
используй метод Find объекта Range.
...
Рейтинг: 0 / 0
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
    #32726654
TreeYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли без "и", проще ответить только на второй вопрос:
используй метод Find объекта Range.

Перед обращением на форум я использовал "Find" - результат тот же.

Ниже показываю в подтверждение кода фрагмент:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    Dim iRange As Range
    Dim row As Integer
    Dim col As Integer
    Set c = .Find(ComboBox1.Value, LookIn:=xlValues)  ' search name of month 
    If Not c Is Nothing Then
        firstAddress = c.Address  ' received $K$29 
       MsgBox "18.firstAddress = " & firstAddress  ' received $K$29 
        '    column 'K' contain name month 
        Do
        If Range(firstAddress).Offset( 0 ,  1 ).Value = ComboBox2.Value Then
            MsgBox "ЗАПИСЬ з таким ключём уже имеется" & Chr( 13 ) & _
            "Название месяца + Название района" & Chr( 13 ) & _
            ComboBox1.Value & Chr( 13 ) & ComboBox2.Value & Chr( 13 ) & _
            "поэтому ДУБЛИРОВАТЬ НЕ БУДЕМ"
            Exit Sub  ' Je have added, чтобы дальше не искать 
            Set c = .FindNext(c)  ' continue search district 
        End If
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
    End With

СПАСИБО.
...
Рейтинг: 0 / 0
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
    #32728197
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot]Перед обращением на форум я использовал "Find" - результат тот же./quot]
Отлаженный вариант фрагмента см. в приложении.
Предлагаю самому автору указать на собственную ашипку ;-)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]