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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск в диапазоне с последующим смещением - Мир MS Excel

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

Excel 2016
Делаю поиск строки сначала по одному диапазону с цифрой года, потом со смещением на один столбец по второму диапазону с названием месяца, и присваиваю значения нужным ячейкам. Для первого месяца отрабатывает все нормально, а остальные месяцы не находит. не могу понять где ошибка, хотя сначала все работало.
[vba]
Код
Sub CommandButton1_Click()
Dim mmm, yyy As Range
Dim mm, yy, nn As String
Set yy = Range("B1")
Set mm = Range("B2")
nn = Range("B3")
Set var1 = Range("B4")
Set var2 = Range("B5")
Set var3 = Range("B6")
Set var4 = Range("B7")
Set yyy = Sheets(nn).Columns(1).Find(yy)
Set mmm = yyy.Offset(, 1).Find(mm)
If yyy Is Nothing Then MsgBox "Год " & yy & " не найден в базе данных.", vbExclamation: Exit Sub
If mmm Is Nothing Then MsgBox "Месяц " & mm & " не найден в базе данных.", vbExclamation: Exit Sub
mmm.Offset(, 1).Cells(1.1) = var1
mmm.Offset(, 5).Cells(1.1) = var2
mmm.Offset(, 6).Cells(1.1) = var3
mmm.Offset(, 8).Cells(1.1) = var4
End Sub
[/vba]
К сообщению приложен файл: 3251628.xlsm(31.5 Kb)
 
Ответить
СообщениеДелаю поиск строки сначала по одному диапазону с цифрой года, потом со смещением на один столбец по второму диапазону с названием месяца, и присваиваю значения нужным ячейкам. Для первого месяца отрабатывает все нормально, а остальные месяцы не находит. не могу понять где ошибка, хотя сначала все работало.
[vba]
Код
Sub CommandButton1_Click()
Dim mmm, yyy As Range
Dim mm, yy, nn As String
Set yy = Range("B1")
Set mm = Range("B2")
nn = Range("B3")
Set var1 = Range("B4")
Set var2 = Range("B5")
Set var3 = Range("B6")
Set var4 = Range("B7")
Set yyy = Sheets(nn).Columns(1).Find(yy)
Set mmm = yyy.Offset(, 1).Find(mm)
If yyy Is Nothing Then MsgBox "Год " & yy & " не найден в базе данных.", vbExclamation: Exit Sub
If mmm Is Nothing Then MsgBox "Месяц " & mm & " не найден в базе данных.", vbExclamation: Exit Sub
mmm.Offset(, 1).Cells(1.1) = var1
mmm.Offset(, 5).Cells(1.1) = var2
mmm.Offset(, 6).Cells(1.1) = var3
mmm.Offset(, 8).Cells(1.1) = var4
End Sub
[/vba]

Автор - aleshke
Дата добавления - 04.09.2020 в 13:59
Kuzmich Дата: Пятница, 04.09.2020, 18:04 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 521
Репутация: 102 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Sub CommandButton1_Click()
    Dim mmm As Range, yyy As Range
    With Sheets(CStr(Range("B3")))
      Set yyy = .Columns(1).Find(Range("B1"))
      Set mmm = .Range(.Cells(yyy.Row, 2), .Cells(yyy.Row + yyy.MergeArea.Count - 2, 2)).Find(Range("B2"))
    If yyy Is Nothing Then MsgBox "Год " & Range("B1") & " не найден в базе данных.", vbExclamation: Exit Sub
    If mmm Is Nothing Then MsgBox "Месяц " & Range("B2") & " не найден в базе данных.", vbExclamation: Exit Sub
      mmm.Offset(, 1) = Range("B4")
      mmm.Offset(, 5) = Range("B5")
      mmm.Offset(, 6) = Range("B6")
      mmm.Offset(, 8) = Range("B7")
    End With
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код
Sub CommandButton1_Click()
    Dim mmm As Range, yyy As Range
    With Sheets(CStr(Range("B3")))
      Set yyy = .Columns(1).Find(Range("B1"))
      Set mmm = .Range(.Cells(yyy.Row, 2), .Cells(yyy.Row + yyy.MergeArea.Count - 2, 2)).Find(Range("B2"))
    If yyy Is Nothing Then MsgBox "Год " & Range("B1") & " не найден в базе данных.", vbExclamation: Exit Sub
    If mmm Is Nothing Then MsgBox "Месяц " & Range("B2") & " не найден в базе данных.", vbExclamation: Exit Sub
      mmm.Offset(, 1) = Range("B4")
      mmm.Offset(, 5) = Range("B5")
      mmm.Offset(, 6) = Range("B6")
      mmm.Offset(, 8) = Range("B7")
    End With
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 04.09.2020 в 18:04
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск в диапазоне с последующим смещением (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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