Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > ComboBox в Excel


Автор: illidan 12.3.2009, 17:22
Ребята need your help

в таблице Excel есть ячейка с выбором(см. скрин)
user posted image
как с помощью макроса(желательно именно на нём) создать событие - при выборе в ячейке определённого значения выполнялся определённый макрос, например:


Макрос№1
Код

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("EA:EA")) Is Nothing Then
             With Target(1, -0)
                 .Value = Now + 3
                 .EntireColumn.AutoFit
             End With
End If
End Sub


Макрос№2
Код

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("EA:EA")) Is Nothing Then
             With Target(1, -0)
                 .Value = Now + 7
                 .EntireColumn.AutoFit
             End With
End If
End Sub


приветствуется решение через форму...

Заранее спасибо...

PS вообще то нужно изменять дату в предведущей ячейке в зависимости от выбранного значения

Автор: FINANSIST 12.3.2009, 19:24
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Object
Set isect = Application.Intersect(Range("A2:A26"), Target)
If isect Is Nothing Then Exit Sub
Select Case Trim(ActiveCell.Value)
Case "Ожидание"
call Макрос1
Case "Нет контакта"
call Макрос2
End Select
End Sub

Автор: Staruha 13.3.2009, 13:55
Надо процедуру загнать в переменную и запустить ее после End Select
 
Код

             End Select
                     pr

Автор: illidan 16.3.2009, 18:43
Staruha вот здесь поподробней пожалуйста....

Автор: Staruha 17.3.2009, 10:42
Честно сказать это я реализовала на Delphi10
Объявила глобальную переменную
 pr:procedure;
Далее


Код

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);

    Begin
       ind:= TreeView1.Selected.AbsoluteIndex;

  if (ind>1)  Then
     Begin

    
         case ind of
   2:pr:=Vozdprh;//
   3:pr:=VSpiral; //
   5:pr:=Vrezka;//
   6:pr:=VrezkaF; //.
   7:pr:=GVstavka;//
   8:pr:=Demo; //
   9:pr:=Drosel; //
  10:pr:=Glucthca;
    27:pr:=Chtumogl
 end;
       pr;
     
      end;
     

   end;

А на  VBA реализовать придется тебе  smile 

Автор: illidan 17.3.2009, 18:11
Staruha хаха, не смешно.... но спасиб и на етом...

FINANSIST можно поподробней как в етот код всунуть макрос из моего примера хотя бы 1, ибо я ковырялся пока без результатно  smile 

Автор: FINANSIST 17.3.2009, 23:16
Я тебе уже выложил свой код - что тебя в нём не устраивает?

Автор: Staruha 18.3.2009, 12:11
Вот это вставляешь в Module

Код

Sub Макрос1()
MsgBox "bebe :)"
End Sub

а это в лист,где макрос надо запустить

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, 1) = "ляля" Then
Макрос1
End If
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)