Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ / 4 сообщений из 4, страница 1 из 1
06.10.2004, 16:36
    #32726453
TreeYear
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
Код: 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
06.10.2004, 16:57
    #32726517
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
ПОЧЕМУ НЕ РАБОТАЕТ второй if
и как выйти из ситуации ?
Если без "и", проще ответить только на второй вопрос:
используй метод Find объекта Range.
...
Рейтинг: 0 / 0
06.10.2004, 17:46
    #32726654
TreeYear
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
авторЕсли без "и", проще ответить только на второй вопрос:
используй метод 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
07.10.2004, 15:32
    #32728197
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ
[quot]Перед обращением на форум я использовал "Find" - результат тот же./quot]
Отлаженный вариант фрагмента см. в приложении.
Предлагаю самому автору указать на собственную ашипку ;-)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel , СРАВНЕНИЕ СТРОК НЕ ВЫПОЛНЯЕТЯСЯ / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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