![](/img/trans.png)
[英]How do I select the same range across multiple sheets in Excel VBA?
[英]How do I insert rows in the same place across multiple sheets?
我有一張excel表,在一個主選項卡上我有公司名稱列表,然后由34張表引用,其中包含有關公司的各種詳細信息。 在34個特定工作表中輸入數據,然后將其拉回主選項卡。
參考流程圖:
Master(名稱) - > 34子表子表(信息) - > Mastersheet
根據我如何解決這個問題,我無法找到將公司添加到主列表的方法,因為子表上引用的單元格不會自動向下移動。 這會導致錯誤引用。
我感興趣但不知道該怎么做的解決方案是在VBA中創建一個始終運行的宏,並將新行添加/刪除到添加到主工作表的完全相同位置的所有子表。
例如,如果在主工作表上在行50和51之間添加了一個新行,那么在所有子工作表上也會添加一個新行。
我完全迷失了如何做到這一點,所以任何和所有的幫助將不勝感激。 謝謝你,祝你有美好的一天!
我甚至不確定從哪里開始我道歉。
編輯:我已經提出了解決這個問題的方法。 如果其他人稍后有同樣的問題,請在下面發布。
Option Explicit
Public Sub Worksheet_Change(ByVal Target As Range)
Dim ws
Dim trgtRow
Dim NewRowCount As Long
Dim OldRowCount As Long
trgtRow = Target.Row
OldRowCount = Sheet3.UsedRange.Rows.Count
NewRowCount = Sheet2.UsedRange.Rows.Count
If Not Application.Intersect(Range("A2:A100"), Target) Is Nothing Then
For Each ws In ThisWorkbook.Worksheets
ElseIf ws.Name <> Sheet2.Name Then
If OldRowCount < NewRowCount Then
ws.Rows(trgtRow).Insert Shift:=xlDown
ElseIf OldRowCount > NewRowCount Then
ws.Rows(trgtRow).Delete Shift:=xlUp
End If
End If
Next ws
End If
End Sub
此代碼只是一個起點:當您在Master
工作表中插入一行時,它將在每個工作表中的同一位置插入一行。 將代碼放在工作表對象中。
在下方,您對目標范圍內的單元格進行任何更改,它將插入一個新行。
Public Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, trgtRow As Long
trgtRow = Target.Row
If Not Application.Intersect(Range("A2:A100"), Target) Is Nothing Then
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Master" Then ws.Rows(trgtRow).Insert Shift:=xlDown
Next ws
End If
End Sub
另一種實現這一目標的方法是: 在vba窗口中,在ThisWorkbook
或Sheet("Master")
插入以下宏,然后在Master
工作表上添加一個按鈕,右鍵單擊該按鈕並將宏指定給該按鈕。 將光標放在單元格上並選擇按鈕時,宏將在每個工作表中插入一個新行。
Sub InsertRowsInAllWS()
Dim ws As Worksheet, trgtRow As Long
trgtRow = ActiveCell.Row
For Each ws In ThisWorkbook.Worksheets
ws.Rows(trgtRow).Insert Shift:=xlDown
Next ws
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.