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

Вход

Регистрация

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

 

= Мир MS Excel/по вводу значения в ячейку заполнить данными другие ячейки - Мир MS Excel

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

Excel 2003
Здравствуйте.

помогите в написание макроса
необходимо на Лист2 при вводе значения ячейки таблице в столбце "С" проверить наличия значения на Лист1 в таблице столбца "В" и при наличии совпадения необходимо вставить "как значения" в таблицу на Лист2 напротив вводимой строки значения с таблицы Лист1
если совпадения не выявлено, то выводим сообщение "нет совпадения" и выполнение макроса останавливается.
К сообщению приложен файл: _1.xls (18.5 Kb)


Сообщение отредактировал ko-diop - Пятница, 09.01.2015, 20:39
 
Ответить
СообщениеЗдравствуйте.

помогите в написание макроса
необходимо на Лист2 при вводе значения ячейки таблице в столбце "С" проверить наличия значения на Лист1 в таблице столбца "В" и при наличии совпадения необходимо вставить "как значения" в таблицу на Лист2 напротив вводимой строки значения с таблицы Лист1
если совпадения не выявлено, то выводим сообщение "нет совпадения" и выполнение макроса останавливается.

Автор - ko-diop
Дата добавления - 09.01.2015 в 19:10
Karataev Дата: Пятница, 09.01.2015, 22:16 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
смотрите приатаченный файл.
макрос находится в модуле лист2.
макрос срабатывает при любом изменении на листе2.
К сообщению приложен файл: macro_1.xls (42.5 Kb)
 
Ответить
Сообщениесмотрите приатаченный файл.
макрос находится в модуле лист2.
макрос срабатывает при любом изменении на листе2.

Автор - Karataev
Дата добавления - 09.01.2015 в 22:16
ko-diop Дата: Суббота, 10.01.2015, 12:51 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
спасибо


Сообщение отредактировал ko-diop - Суббота, 10.01.2015, 13:05
 
Ответить
Сообщениеспасибо

Автор - ko-diop
Дата добавления - 10.01.2015 в 12:51
ko-diop Дата: Суббота, 10.01.2015, 13:04 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Karataev,
большое спасибо за макрос.
а можно подкорректировать макрос для страницы "результат" используя данные страницы "список"
а можно добавить условие: проверить наличие данных в ячейке столбца "Категория" страницы "результат" - если ячейка не пустая то спрашивать "замену проводить", если да - то делается замена, если нет - ничего не делается.

заранее выношу благодарность.
также за сделанный макрос.
прикрепляю файл.
К сообщению приложен файл: 4822479.xls (53.5 Kb)
 
Ответить
СообщениеKarataev,
большое спасибо за макрос.
а можно подкорректировать макрос для страницы "результат" используя данные страницы "список"
а можно добавить условие: проверить наличие данных в ячейке столбца "Категория" страницы "результат" - если ячейка не пустая то спрашивать "замену проводить", если да - то делается замена, если нет - ничего не делается.

заранее выношу благодарность.
также за сделанный макрос.
прикрепляю файл.

Автор - ko-diop
Дата добавления - 10.01.2015 в 13:04
Karataev Дата: Суббота, 10.01.2015, 14:57 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
изменил
К сообщению приложен файл: macro2.xls (54.5 Kb)
 
Ответить
Сообщениеизменил

Автор - Karataev
Дата добавления - 10.01.2015 в 14:57
ko-diop Дата: Суббота, 10.01.2015, 21:08 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Karataev,
списибо.
в макросе удалил строку. которая делает удаление данных. она ненужна. так как в те ячейки все равно делается копирование данных.

помогите что надо изменить в следующем макросе

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then
If Not IsDate(Target.Value) Then
' Target.NumberFormat = "dd.mm.yyyy" Change BeforeDoubleClick
Target.Value = Date
End If
End If
End Sub
[/vba]

чтобы не проверялся весь столбец а только с 10 по 500 строку, и только туда вводились изменения.

и еще непонятно. почему при выделении диапазона с захватом 4 столбца происходит замена всего выделенного диапазона?

спасибо за макросссссс.

[moder]Обязательно используйте соответствующие теги при оформлении сообщений!
кнопка #[/moder]
 
Ответить
СообщениеKarataev,
списибо.
в макросе удалил строку. которая делает удаление данных. она ненужна. так как в те ячейки все равно делается копирование данных.

помогите что надо изменить в следующем макросе

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then
If Not IsDate(Target.Value) Then
' Target.NumberFormat = "dd.mm.yyyy" Change BeforeDoubleClick
Target.Value = Date
End If
End If
End Sub
[/vba]

чтобы не проверялся весь столбец а только с 10 по 500 строку, и только туда вводились изменения.

и еще непонятно. почему при выделении диапазона с захватом 4 столбца происходит замена всего выделенного диапазона?

спасибо за макросссссс.

[moder]Обязательно используйте соответствующие теги при оформлении сообщений!
кнопка #[/moder]

Автор - ko-diop
Дата добавления - 10.01.2015 в 21:08
Karataev Дата: Суббота, 10.01.2015, 21:20 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
в макросе удалил строку. которая делает удаление данных. она ненужна. так как в те ячейки все равно делается копирование данных.

я это сделал на случай ,если вы захотите удалить данные из столбца

и еще непонятно. почему при выделении диапазона с захватом 4 столбца происходит замена всего выделенного диапазона?

вы не путаете два вида событий
Worksheet_Change
Worksheet_SelectionChange ?

чтобы не проверялся весь столбец а только с 10 по 500 строку, и только туда вводились изменения.

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Intersect(Target, Range("D10:D500")) Is Nothing Then
         Exit Sub
     End If
     If Target.Cells.Count > 1 Then
         Exit Sub
     End If
     If Not IsDate(Target.Value) Then
     ' Target.NumberFormat = "dd.mm.yyyy" Change BeforeDoubleClick
         Target.Value = Date
     End If
End Sub
[/vba]


Сообщение отредактировал Karataev - Суббота, 10.01.2015, 21:27
 
Ответить
Сообщение
в макросе удалил строку. которая делает удаление данных. она ненужна. так как в те ячейки все равно делается копирование данных.

я это сделал на случай ,если вы захотите удалить данные из столбца

и еще непонятно. почему при выделении диапазона с захватом 4 столбца происходит замена всего выделенного диапазона?

вы не путаете два вида событий
Worksheet_Change
Worksheet_SelectionChange ?

чтобы не проверялся весь столбец а только с 10 по 500 строку, и только туда вводились изменения.

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Intersect(Target, Range("D10:D500")) Is Nothing Then
         Exit Sub
     End If
     If Target.Cells.Count > 1 Then
         Exit Sub
     End If
     If Not IsDate(Target.Value) Then
     ' Target.NumberFormat = "dd.mm.yyyy" Change BeforeDoubleClick
         Target.Value = Date
     End If
End Sub
[/vba]

Автор - Karataev
Дата добавления - 10.01.2015 в 21:20
ko-diop Дата: Суббота, 10.01.2015, 21:59 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Karataev,
изменения то что надо.
способы я не путаю.
один после ввода значения в ячейку, другой при выделении ячейки (диапазона).
в моем варианте при выделении ячеек начиная с столбца 4 вводились значения во ввесь диапазон.

макрос работает очень хорошо.
спасибо.


Сообщение отредактировал ko-diop - Суббота, 10.01.2015, 22:07
 
Ответить
СообщениеKarataev,
изменения то что надо.
способы я не путаю.
один после ввода значения в ячейку, другой при выделении ячейки (диапазона).
в моем варианте при выделении ячеек начиная с столбца 4 вводились значения во ввесь диапазон.

макрос работает очень хорошо.
спасибо.

Автор - ko-diop
Дата добавления - 10.01.2015 в 21:59
ko-diop Дата: Воскресенье, 11.01.2015, 20:17 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Karataev,
привет.
вопрос.
при использовании процедуры Worksheet_Change
как определить содержание ячейки до ее изменения.

либо как вернуть предыдущее значение ячейки??


Сообщение отредактировал ko-diop - Воскресенье, 11.01.2015, 20:25
 
Ответить
СообщениеKarataev,
привет.
вопрос.
при использовании процедуры Worksheet_Change
как определить содержание ячейки до ее изменения.

либо как вернуть предыдущее значение ячейки??

Автор - ko-diop
Дата добавления - 11.01.2015 в 20:17
ShAM Дата: Воскресенье, 11.01.2015, 20:37 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Может, Application.Undo
 
Ответить
СообщениеМожет, Application.Undo

Автор - ShAM
Дата добавления - 11.01.2015 в 20:37
Karataev Дата: Воскресенье, 11.01.2015, 20:38 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
в excel vba нет инструмента,чтобы узнать, что было в ячейке .нужно делать какой-то код. например,куда-то будут записываться все действия,а потом брать оттуда данные

отменить действие можно так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Value = 1 Then
         Application.EnableEvents = False
         Application.Undo
         Application.EnableEvents = True
     End If
End Sub
[/vba]
в коде,если в ячейку введено 1,то будет отменено действие.

но Undo не всегда будет работать -после некоторых действий(не могу привести пример сейчас) Undo не работает


Сообщение отредактировал Karataev - Воскресенье, 11.01.2015, 22:46
 
Ответить
Сообщениев excel vba нет инструмента,чтобы узнать, что было в ячейке .нужно делать какой-то код. например,куда-то будут записываться все действия,а потом брать оттуда данные

отменить действие можно так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Value = 1 Then
         Application.EnableEvents = False
         Application.Undo
         Application.EnableEvents = True
     End If
End Sub
[/vba]
в коде,если в ячейку введено 1,то будет отменено действие.

но Undo не всегда будет работать -после некоторых действий(не могу привести пример сейчас) Undo не работает

Автор - Karataev
Дата добавления - 11.01.2015 в 20:38
ko-diop Дата: Воскресенье, 11.01.2015, 21:31 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
в вашем макросе после проверки на так/ні после нажатия на "ні" остается последнее значение, а нужно чтобы я ячейке (№ п/п) предыдущее значение.
 
Ответить
Сообщениев вашем макросе после проверки на так/ні после нажатия на "ні" остается последнее значение, а нужно чтобы я ячейке (№ п/п) предыдущее значение.

Автор - ko-diop
Дата добавления - 11.01.2015 в 21:31
Karataev Дата: Воскресенье, 11.01.2015, 21:40 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
в посте 5 не возвращается предыдущее значение ?
 
Ответить
Сообщениев посте 5 не возвращается предыдущее значение ?

Автор - Karataev
Дата добавления - 11.01.2015 в 21:40
ko-diop Дата: Воскресенье, 11.01.2015, 22:23 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Karataev,
[vba]
Код
If IsEmpty(Cells(Target.Row, "F").Value) = False Then
If MsgBox("так/ні", vbYesNo + vbQuestion) = vbNo Then
' Application.Undo
Exit Sub
End If
Cells(Target.Row, "F").Resize(1, 3).ClearContents
End If
[/vba]

не выходит с MsgBox при нажатии на "нет"
хотя меняет значение ячейки

[moder]Похоже, что мое замечание про "оформление тегами обязательно" было зря?
Бан 2 часа![/moder]


Сообщение отредактировал DJ_Marker_MC - Понедельник, 12.01.2015, 11:12
 
Ответить
СообщениеKarataev,
[vba]
Код
If IsEmpty(Cells(Target.Row, "F").Value) = False Then
If MsgBox("так/ні", vbYesNo + vbQuestion) = vbNo Then
' Application.Undo
Exit Sub
End If
Cells(Target.Row, "F").Resize(1, 3).ClearContents
End If
[/vba]

не выходит с MsgBox при нажатии на "нет"
хотя меняет значение ячейки

[moder]Похоже, что мое замечание про "оформление тегами обязательно" было зря?
Бан 2 часа![/moder]

Автор - ko-diop
Дата добавления - 11.01.2015 в 22:23
Karataev Дата: Воскресенье, 11.01.2015, 22:32 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
добавил в макрос EnableEvents,чтобы отключать события во время работы макроса
К сообщению приложен файл: macro3.xls (54.0 Kb)
 
Ответить
Сообщениедобавил в макрос EnableEvents,чтобы отключать события во время работы макроса

Автор - Karataev
Дата добавления - 11.01.2015 в 22:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » по вводу значения в ячейку заполнить данными другие ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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