На четырех листах книги расположены однотипные таблицы, для удобства заполнения таблиц журнала были прописаны макросы по событию. В колонках для введения дат, по двойному клику ячейки, выбор даты в выпадающем календаре. В колонках: "I","J","K" , при изменении значений ячеек должен происходить расчет Предельного срока годности или Кол-во дней хранения. Замечено, что макросы перестают выполнятся, если открыто несколько разных книг Excel. Приходится закрывать все книги и открывать только текущую. Прошу знатоков подсказать, что можно подправить в коде, для корректной работы макросов , если открыто несколько книг. [vba]
Код
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim iii As Integer For iii = 2 To 100 With ActiveSheet Application.EnableEvents = False If Cells(iii, "I").Value <> "" And Cells(iii, "J").Value <> "" And Cells(iii, "K").Value <> "" Then End If If Cells(iii, "I").Value <> "" And Cells(iii, "J").Value = "" And Cells(iii, "K").Value <> "" Then Cells(iii, "J").Value = Cells(iii, "I").Value + Cells(iii, "K").Value MsgBox "Предельный срок годности установлен!", vbOKOnly + vbInformation, "Срок Годности" ElseIf Cells(iii, "I").Value <> "" And Cells(iii, "J").Value <> "" And Cells(iii, "K").Value = "" Then Cells(iii, "K").Value = Cells(iii, "J").Value - Cells(iii, "I").Value MsgBox "Количество дней хранения установлено!", vbOKOnly + vbExclamation, "Дней Хранения" Else Application.EnableEvents = True End If End With Next
End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Worksheets("Приемка с технологом").Activate If Not Intersect(Target, Range("A:A,I:I,J:J")) Is Nothing Then Application.EnableEvents = False andcalendar.Show If andcalendar.Value = 0 Then ActiveCell = "" End If If andcalendar.Value > 0 Then Target = Format(andcalendar.Value, "dd/mm/yy") End If End If Application.EnableEvents = True
End Sub
[/vba]
Здравствуйте Уважаемые форумчане.
На четырех листах книги расположены однотипные таблицы, для удобства заполнения таблиц журнала были прописаны макросы по событию. В колонках для введения дат, по двойному клику ячейки, выбор даты в выпадающем календаре. В колонках: "I","J","K" , при изменении значений ячеек должен происходить расчет Предельного срока годности или Кол-во дней хранения. Замечено, что макросы перестают выполнятся, если открыто несколько разных книг Excel. Приходится закрывать все книги и открывать только текущую. Прошу знатоков подсказать, что можно подправить в коде, для корректной работы макросов , если открыто несколько книг. [vba]
Код
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim iii As Integer For iii = 2 To 100 With ActiveSheet Application.EnableEvents = False If Cells(iii, "I").Value <> "" And Cells(iii, "J").Value <> "" And Cells(iii, "K").Value <> "" Then End If If Cells(iii, "I").Value <> "" And Cells(iii, "J").Value = "" And Cells(iii, "K").Value <> "" Then Cells(iii, "J").Value = Cells(iii, "I").Value + Cells(iii, "K").Value MsgBox "Предельный срок годности установлен!", vbOKOnly + vbInformation, "Срок Годности" ElseIf Cells(iii, "I").Value <> "" And Cells(iii, "J").Value <> "" And Cells(iii, "K").Value = "" Then Cells(iii, "K").Value = Cells(iii, "J").Value - Cells(iii, "I").Value MsgBox "Количество дней хранения установлено!", vbOKOnly + vbExclamation, "Дней Хранения" Else Application.EnableEvents = True End If End With Next
End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Worksheets("Приемка с технологом").Activate If Not Intersect(Target, Range("A:A,I:I,J:J")) Is Nothing Then Application.EnableEvents = False andcalendar.Show If andcalendar.Value = 0 Then ActiveCell = "" End If If andcalendar.Value > 0 Then Target = Format(andcalendar.Value, "dd/mm/yy") End If End If Application.EnableEvents = True
and23032, здравствуйте, что бы Cells ссылался на нужную книгу, надо добавить, как минимум, with Worksheets("Имя листа") ... end with и перед каждым Cellsом, добавить точку Cells, без предшествующего префикса, всегда ссылается на активный лист. просто соблюдайте синтаксис.
and23032, здравствуйте, что бы Cells ссылался на нужную книгу, надо добавить, как минимум, with Worksheets("Имя листа") ... end with и перед каждым Cellsом, добавить точку Cells, без предшествующего префикса, всегда ссылается на активный лист. просто соблюдайте синтаксис.boa