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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир 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(48Kb)
 
Ответить
СообщениеДобрый день!
Вообщем создал форму, в которой при нажатии кнопки ищется номер из 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
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]


marinamorozova_box@mail.ru
ЯД: 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
Группа: Друзья
Ранг: Обитатель
Сообщений: 341
Репутация: 63 ±
Замечаний: 0% ±

20xx
Gladios74,

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


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

Сообщение отредактировал Матраскин - Среда, 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 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 из 11
Поиск:

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