Добрый день! Помогите)) Как можно реализовать в нашей любимой программе отображение информационного окошка с журналом событий по каждому документу? Я вставил в ячейках R7:R9 формулы для показа последнего события по конкретному документу. Под таблицей указал, о каком журнале событий идет речь. Спасибо заранее за проявленное внимание к данной теме!
Добрый день! Помогите)) Как можно реализовать в нашей любимой программе отображение информационного окошка с журналом событий по каждому документу? Я вставил в ячейках R7:R9 формулы для показа последнего события по конкретному документу. Под таблицей указал, о каком журнале событий идет речь. Спасибо заранее за проявленное внимание к данной теме!Мурад
Может мне пример попроще выложить, если вас сбивают с толку длинные таблицы? Допустим, фамилии Иванов, Петров, Сидоров. Под каждой фамилией числа от 1 до 5. При нажатии на фамилию выходит сообщение: 1 2 3 4 5
Может мне пример попроще выложить, если вас сбивают с толку длинные таблицы? Допустим, фамилии Иванов, Петров, Сидоров. Под каждой фамилией числа от 1 до 5. При нажатии на фамилию выходит сообщение: 1 2 3 4 5Мурад
Вы хотите щелчком по ячейке диапазона вызвать MsgBox? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call test(Target) End Sub
Public Sub test(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2:A100")) Is Nothing Then MsgBox "Шо ви хотите?"
End Sub
[/vba] [p.s.]Сообщение можно любое составить
Вы хотите щелчком по ячейке диапазона вызвать MsgBox? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call test(Target) End Sub
Public Sub test(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2:A100")) Is Nothing Then MsgBox "Шо ви хотите?"
nilem, спасибо за труд! С имеющейся в файле информацией код работает отлично! Но стоило мне дописать новый этап в Истории согласования, компилятор сдался... Допустим, по второй заявке.. Постараюсь доработать Ваш код, чтобы высвечивались все этапы из листа Истории согласования.
nilem, спасибо за труд! С имеющейся в файле информацией код работает отлично! Но стоило мне дописать новый этап в Истории согласования, компилятор сдался... Допустим, по второй заявке.. Постараюсь доработать Ваш код, чтобы высвечивались все этапы из листа Истории согласования.Мурад
nilem, давайте доработаем Ваш код. Сделаем проверку по каждой строке: 1) Если дата передачи заполнена, а дата возврата не заполнена (номер столбца даты передачи - N), то показываем запись: N&" "&(N-2)&" направл. "&(N-1) 2) Если помимо даты передачи еще и заполнена дата возврата (номер столбца даты передачи - N), то показываем запись: (N+1)&" "&(N-2)&" "&(N+2)&" "&(N-1) Цикл проверяет ячейки 6, 11, 16 (с шагом 5), до 56 включительно. Если имеется разрыв между этапами, т.е. в этапе 1 имеются сведения, во 2-4 этапах информации нет, а в 5 этапе сведения имеются снова, то пустые строки в журнале событий не показывать..
nilem, давайте доработаем Ваш код. Сделаем проверку по каждой строке: 1) Если дата передачи заполнена, а дата возврата не заполнена (номер столбца даты передачи - N), то показываем запись: N&" "&(N-2)&" направл. "&(N-1) 2) Если помимо даты передачи еще и заполнена дата возврата (номер столбца даты передачи - N), то показываем запись: (N+1)&" "&(N-2)&" "&(N+2)&" "&(N-1) Цикл проверяет ячейки 6, 11, 16 (с шагом 5), до 56 включительно. Если имеется разрыв между этапами, т.е. в этапе 1 имеются сведения, во 2-4 этапах информации нет, а в 5 этапе сведения имеются снова, то пустые строки в журнале событий не показывать..Мурад
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("R7:R100")) Is Nothing Then Exit Sub Cancel = True Dim s$, i As Integer With Sheets("История согласования").Rows(Target.Row) For i = 6 To 56 Step 5 If (.Cells(i) <> "") And (.Cells(i + 1) = "") Then s = s & .Cells(i) & " " & .Cells(i - 2) & " направл. " & .Cells(i - 1) & vbCrLf ElseIf (.Cells(i) <> "") And (.Cells(i + 1) <> "") Then s = s & .Cells(i + 1) & " " & .Cells(i - 2) & " " & .Cells(i + 2) & " " & .Cells(i - 1) & vbCrLf ElseIf (.Cells(i) = "") And (.Cells(i + 1) <> "") Then s = s & .Cells(i + 1) & " " & .Cells(i - 2) & " " & .Cells(i + 2) & " " & .Cells(i - 1) & vbCrLf End If Next End With MsgBox s, 64 End Sub
[/vba]
Спасибо, nilem, доработал Ваш код: [vba]
Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("R7:R100")) Is Nothing Then Exit Sub Cancel = True Dim s$, i As Integer With Sheets("История согласования").Rows(Target.Row) For i = 6 To 56 Step 5 If (.Cells(i) <> "") And (.Cells(i + 1) = "") Then s = s & .Cells(i) & " " & .Cells(i - 2) & " направл. " & .Cells(i - 1) & vbCrLf ElseIf (.Cells(i) <> "") And (.Cells(i + 1) <> "") Then s = s & .Cells(i + 1) & " " & .Cells(i - 2) & " " & .Cells(i + 2) & " " & .Cells(i - 1) & vbCrLf ElseIf (.Cells(i) = "") And (.Cells(i + 1) <> "") Then s = s & .Cells(i + 1) & " " & .Cells(i - 2) & " " & .Cells(i + 2) & " " & .Cells(i - 1) & vbCrLf End If Next End With MsgBox s, 64 End Sub
Компиляторы не сдаются! просто иногда они расслябляются попробуйте так [vba]
Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("R7:R100")) Is Nothing Then Exit Sub Cancel = True Dim x, s$, i& x = Sheets("История согласования").Cells(Target.Row, 1).Resize(, 58).Value For i = 6 To 56 Step 5 If Len(x(1, i)) Then If Len(x(1, i + 1)) Then ' (N+1)&" "&(N-2)&" "&(N+2)&" "&(N-1) s = s & x(1, i + 1) & " " & x(1, i - 2) & " " & x(1, i + 2) & " " & x(1, i - 1) & vbCrLf Else 'N & " " & (N-2) & " направл. " & (N-1) s = s & x(1, i) & " " & x(1, i - 2) & " направл. " & x(1, i - 1) & vbCrLf End If End If Next i MsgBox s, 64 End Sub
Компиляторы не сдаются! просто иногда они расслябляются попробуйте так [vba]
Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("R7:R100")) Is Nothing Then Exit Sub Cancel = True Dim x, s$, i& x = Sheets("История согласования").Cells(Target.Row, 1).Resize(, 58).Value For i = 6 To 56 Step 5 If Len(x(1, i)) Then If Len(x(1, i + 1)) Then ' (N+1)&" "&(N-2)&" "&(N+2)&" "&(N-1) s = s & x(1, i + 1) & " " & x(1, i - 2) & " " & x(1, i + 2) & " " & x(1, i - 1) & vbCrLf Else 'N & " " & (N-2) & " направл. " & (N-1) s = s & x(1, i) & " " & x(1, i - 2) & " направл. " & x(1, i - 1) & vbCrLf End If End If Next i MsgBox s, 64 End Sub
Вот заразы! Не устраивает исполнителей один файл. Дело в том, что один человек заносит информацию по событиям заявок, а другой человек - по событиям проектов договоров и договоров. В одном файле, видите ли, им работать неудобно... Буду думать, как разделить этот файл на 2 файла с отображением полной истории событий по каждому файлу
Вот заразы! Не устраивает исполнителей один файл. Дело в том, что один человек заносит информацию по событиям заявок, а другой человек - по событиям проектов договоров и договоров. В одном файле, видите ли, им работать неудобно... Буду думать, как разделить этот файл на 2 файла с отображением полной истории событий по каждому файлуМурад
nilem, твой код безупречен! Работает по принципу "1-0", "1-1". А вот по "0-1" не работает по моей вине. Сам не уточнил вначале, извиняюсь. Но это дело техники, наверное Написал пост про 2х исполнителей. Если не получится ничего самому, создам тему.
nilem, твой код безупречен! Работает по принципу "1-0", "1-1". А вот по "0-1" не работает по моей вине. Сам не уточнил вначале, извиняюсь. Но это дело техники, наверное Написал пост про 2х исполнителей. Если не получится ничего самому, создам тему.Мурад