2015-07-20 11 views
-1

我如何在Excel中做到這一點?我用這對A列中工作,但我還想做其他列如何在Excel中執行此操作。我用這個工作列A,但我也想做額外的列

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim T As Range, r As Range 
    Set T = Intersect(Target, Range("A:A")) 
    If T Is Nothing Then Exit Sub 
    Application.EnableEvents = False 
    For Each r In T 
     With r 
      .Offset(0, 1).Value = .Offset(0, 1).Value + .Value 
      .ClearContents 
     End With 
    Next r 
    Application.EnableEvents = True 
End Sub 
+0

還有什麼其他專欄? – BruceWayne

+0

如果您將「A:A」更改爲列,它將在這些列上運行。我會研究一個可以提示你的宏,如果它像你想要的那樣工作,比如說,「B:B」。 – BruceWayne

+0

現在我將它運行在列B中,並將值添加到C列,然後將B重置爲零。我也希望它在下面的列中執行f,g j,k n,o r,s v,w z,aa – Bobby

回答

0

試試這個:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim T As Range, r As Range 
Dim columnArray() As String, columnsToCopy As String 
Dim i As Integer 

columnsToCopy = InputBox("What columns (A,B,C, etc.) would you like to copy the data of? Use SPACES, to separate columns") 
columnArray() = Split(columnsToCopy) 

For i = LBound(columnArray) To UBound(columnArray) 
    Set T = Intersect(Target, Range("" & columnArray(i) & ":" & columnArray(i) & "")) 'Columns(columnArray(i)) & ":" & Columns(columnArray(i)))) 
    If T Is Nothing Then Exit Sub 
    Application.EnableEvents = False 
    For Each r In T 
     With r 
      .Offset(0, 1).Value = .Offset(0, 1).Value + .Value 
      .ClearContents 
     End With 
    Next r 
Next i 
Application.EnableEvents = True 
End Sub 

這將創建一個彈出窗口,詢問你的列要運行這個。每次細胞改變時運行這個想法是什麼?這將是很多彈出窗口等,但讓我知道如果這不起作用或有一些錯誤。

+0

這可以工作。唯一的問題是我有77個彈出窗口,用於所有要運行的單元格。 – Bobby

+0

@Bobby - 你需要它是一張工作表_改變事件嗎?爲什麼不把它變成一個常規的宏,並且你選擇何時運行它。爲什麼有77個彈出窗口?你每次都在改變輸入嗎? – BruceWayne

相關問題