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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск по книге и подстановка значений - Мир MS Excel

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

Excel 2010
Добрый день!
Вообщем создал форму, в которой при нажатии кнопки ищется номер из TextBox1 и относительно найденной ячейки вставляется текст из TextBox2.
Проблема с поиском. Ищет только по листу.

[vba]
Код
Sub CommandButton1_Click()
Dim WhatFind As String
Dim sh As Worksheet, c As Range
WhatFind = TextBox1
If TextBox1.TextLength = 6 Then
    For Each sh In Sheets
        Set c = sh.Cells.Find(What:=WhatFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
    Next
        If c Is Nothing Then
            MsgBox "Накладная не найдена"
        Else
            c.Parent.Activate
            c.Activate
            ActiveCell.Offset(0, 3).Value = TextBox2
        End If
Else
MsgBox "Необходимо ввести 6-и значный номер накладной!", 0, "Ошибка"
End If
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End Sub
[/vba]

Честно облазил все темы в этом разделе, видел посты про поиск, но не смог подобрать под свой код.
Подскажите, пожалуйста :) Хочу еще добавить несколько функций, но без нормального поиска дело дальше не пойдет.
К сообщению приложен файл: 5210245.xls (47.5 Kb)
 
Ответить
СообщениеДобрый день!
Вообщем создал форму, в которой при нажатии кнопки ищется номер из TextBox1 и относительно найденной ячейки вставляется текст из TextBox2.
Проблема с поиском. Ищет только по листу.

[vba]
Код
Sub CommandButton1_Click()
Dim WhatFind As String
Dim sh As Worksheet, c As Range
WhatFind = TextBox1
If TextBox1.TextLength = 6 Then
    For Each sh In Sheets
        Set c = sh.Cells.Find(What:=WhatFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
    Next
        If c Is Nothing Then
            MsgBox "Накладная не найдена"
        Else
            c.Parent.Activate
            c.Activate
            ActiveCell.Offset(0, 3).Value = TextBox2
        End If
Else
MsgBox "Необходимо ввести 6-и значный номер накладной!", 0, "Ошибка"
End If
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End Sub
[/vba]

Честно облазил все темы в этом разделе, видел посты про поиск, но не смог подобрать под свой код.
Подскажите, пожалуйста :) Хочу еще добавить несколько функций, но без нормального поиска дело дальше не пойдет.

Автор - Gladios74
Дата добавления - 28.09.2016 в 10:48
Manyasha Дата: Среда, 28.09.2016, 11:43 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Gladios74, здравствуйте, так?
[vba]
Код
Sub CommandButton1_Click()
Dim WhatFind As String
Dim sh As Worksheet, c As Range
WhatFind = TextBox1
If TextBox1.TextLength = 6 Then
    For Each sh In Sheets
        Set c = sh.Cells.Find(What:=WhatFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
        If Not c Is Nothing Then
            c.Parent.Activate
            c.Activate
            ActiveCell.Offset(0, 3).Value = TextBox2
            Exit For
        End If
    Next
    If c Is Nothing Then
            MsgBox "Накладная не найдена"
    End If
Else
MsgBox "Необходимо ввести 6-и значный номер накладной!", 0, "Ошибка"
End If
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеGladios74, здравствуйте, так?
[vba]
Код
Sub CommandButton1_Click()
Dim WhatFind As String
Dim sh As Worksheet, c As Range
WhatFind = TextBox1
If TextBox1.TextLength = 6 Then
    For Each sh In Sheets
        Set c = sh.Cells.Find(What:=WhatFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
        If Not c Is Nothing Then
            c.Parent.Activate
            c.Activate
            ActiveCell.Offset(0, 3).Value = TextBox2
            Exit For
        End If
    Next
    If c Is Nothing Then
            MsgBox "Накладная не найдена"
    End If
Else
MsgBox "Необходимо ввести 6-и значный номер накладной!", 0, "Ошибка"
End If
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 28.09.2016 в 11:43
Матраскин Дата: Среда, 28.09.2016, 11:52 | Сообщение № 3
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Gladios74,

К сообщению приложен файл: new_5210245.xls (45.0 Kb)


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Среда, 28.09.2016, 11:53
 
Ответить
СообщениеGladios74,


Автор - Матраскин
Дата добавления - 28.09.2016 в 11:52
Gladios74 Дата: Среда, 28.09.2016, 12:47 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, так. Спасибо большое :)

Матраскин, хоть и не проверил твой вариант, но все равно спасибо за ответ.
 
Ответить
СообщениеManyasha, так. Спасибо большое :)

Матраскин, хоть и не проверил твой вариант, но все равно спасибо за ответ.

Автор - Gladios74
Дата добавления - 28.09.2016 в 12:47
RAN Дата: Среда, 28.09.2016, 16:06 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А зачем сие шаманство?
[vba]
Код
c.Parent.Activate
     c.Activate
     ActiveCell.Offset(0, 3).Value = TextBox2
[/vba]
достаточно
[vba]
Код
c.Offset(0, 3).Value = TextBox2
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА зачем сие шаманство?
[vba]
Код
c.Parent.Activate
     c.Activate
     ActiveCell.Offset(0, 3).Value = TextBox2
[/vba]
достаточно
[vba]
Код
c.Offset(0, 3).Value = TextBox2
[/vba]

Автор - RAN
Дата добавления - 28.09.2016 в 16:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск по книге и подстановка значений (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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