2015-11-10 35 views
-2
  1. 我想工作變更宏申請整個列。循環如果語句以及多個數據列表選擇後運行宏

    Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address(True, True) = "$P$1" Then 
        Select Case Target 
        Case "Keep - no action" 
         Call KeepNoAction 
        Case Else 
         Selection.ClearContents 
        End Select 
    End If 
    End Sub 
    
  2. 調用的宏, 「KeepNoAction」 我會把它想循環多列/行:

    Sub KeepNoAction() 
    If Range("P1").Value = "Keep - no action" Then 
        Range("N1").Select 
        Selection.Copy 
        Range("S1").Select 
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
        Application.CutCopyMode = False 
        Selection.AutoFill Destination:=Range("S1:AB1"), Type:=xlFillDefault 
        Range("S1:AB1").Select 
    Else 
    End If 
    If Range("P2").Value = "Keep - no action" Then 
        Range("N2").Select 
        Selection.Copy 
        Range("S2").Select 
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
        Application.CutCopyMode = False 
        Selection.AutoFill Destination:=Range("S2:AB2"), Type:=xlFillDefault 
        Range("S2:AB2").Select 
    End If 
    If Range("P3").Value = "Keep - no action" Then 
        Range("N3").Select 
        Selection.Copy 
        Range("S3").Select 
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
        Application.CutCopyMode = False 
        Selection.AutoFill Destination:=Range("S3:AB3"), Type:=xlFillDefault 
        Range("S3:AB3").Select 
    End If 
    
+3

請不要只是告訴我們,'你會Like'。請向我們展示「你試過了什麼」和「你在哪裏卡住」以及「你會得到什麼錯誤」 –

+0

'如果target.column = 16那麼當你改變列P時會啓動# – Davesexcel

回答

0

你改變P列 「保留 - 不採取行動」,那麼你真的需要循環而不是僅僅使用target.row?

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim r As Integer 
    If Target.Column = 16 Then 
     If Target = "Keep - no action" Then 
      r = Target.Row 

      Cells(r, "S").Value = Cells(r, "N").Value 
      Cells(r, "S").AutoFill Destination:=Range("S" & r & ":AB" & r), Type:=xlFillSeries 'Type:=xlFillDefault 
     End If 

     If Target = "Something else" Then 
      MsgBox "Do something else" 
     End If 

    End If 

End Sub 

這是一個循環,你可以工作:

Sub DoIt() 
    Dim LstRw As Long, Rng As Range, c As Range 

    LstRw = Cells(Rows.Count, "P").End(xlUp).Row 
    Set Rng = Range("P1:P" & LstRw) 

    For Each c In Rng.Cells 

     If c = "Keep - no action" Then 
      r = c.Row 
      Cells(r, "S").Value = Cells(r, "N").Value 
      Cells(r, "S").AutoFill Destination:=Range("S" & r & ":AB" & r), Type:=xlFillSeries 'Type:=xlFillDefault 
     End If 

    Next c 

End Sub 
+0

上面的代碼工作太好了!非常感謝:)你是一個拯救生命的人。 – VBAgocode

+0

也許將其標記爲答案,因此它不會像未答覆一樣彈出。 – Davesexcel