![](/img/trans.png)
[英]VBA: How do I merge several columns into 1 ? My current code works but only <450 rows
[英]How do I handle VBA code to include added rows and columns?
仍在嘗試使其正常工作。 Excel 在更改代碼以包含命名范圍后插入一行時崩潰,如下所示。 也許這是由於偏移單元格中沒有數據?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xSht As Worksheet
Set xSht = ActiveWorkbook.ActiveSheet
Dim xRg As Range, xCell As Range
Set xRg = Range("DevTable")
If Not Intersect(Target, xRg) Is Nothing Then
For Each xCell In xRg
If xCell = "" Then
xCell.Value = xCell.Offset(0, 35).Value
End If
Next xCell
End If
End Sub
我想修改下面的代碼,以便如果范圍 (F6:F42) 更改,添加的行/列將被包括在內。 我不希望將范圍更改為 Excel 表,但如果絕對必要的話可以。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim xSht As Worksheet
Set xSht = ActiveWorkbook.ActiveSheet
Dim xRg As Range, xCell As Range
Set xRg = xSht.Range("F6:W42")
If Not Intersect(Target, Range("F6:W42")) Is Nothing Then
For Each xCell In xRg
If xCell = "" Then
xCell.Value = xCell.Offset(0, 35).Value
End If
Next xCell
End If
End Sub>
對於那些感興趣的人,我有兩個相同的價格表(不是官方的 excel 表)。 第二個表(AO:BF 列)用作默認價格表。 第一個表只是通過簡單的公式從第二個表中提取值,例如第一個單元格的公式 =AO6 等。如果用戶決定在幾個月內降低價格,他可以在第一個表中輸入新價格. 該單元格通過條件格式突出顯示,以提醒他價格已更改。 但是,在銷售結束后,他可以稍后只需點擊刪除並將 go 恢復到原價。
不要使用On Error Resume Next
,這是一種不好的做法。 如果錯誤存在,有一種方法可以捕獲並相應地處理它。 無論如何,關於這個問題 - 如果你想保持“干凈”,桌子是唯一可能的選擇。
如果沒有表格,它應該在某處寫入添加的列和行。 例如,在附加的“日志”表中。 然后計算所需的范圍。 但計算量太大,實施將是一場噩夢。
這是表實現,沒有“On Error...”:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRg As Range
Dim xCell As Range
Set xRg = Range("myTable")
If Not Intersect(Target, xRg) Is Nothing Then
For Each xCell In xRg
If xCell = "" Then
xCell.Value = "Something blue"
End If
Next xCell
End If
End Sub
此外,我不確定為什么需要循環通過xRg
而不是通過“目標”,但我想這是有充分理由的。
一個技巧是在您的工作表中使用“命名范圍”。
Set xRg = xSht.Range("F6:W42")
可以變成
Set xRg = xSht.Range("UsuablePrices") ' <-- I made the name up
現在,每當有人(以受控和適當的方式)添加到單元格時,命名范圍都會更改,但您不必修改代碼。
例如,在第 41 行插入一行。您的命名范圍現在引用“F6:W43”,但您的代碼仍為Set xRg = xSht.Range("UsuablePrices")
。
如果做法是在范圍的末尾添加項目,您可以在末尾包含一個空行,並讓每個人都在該行上方添加項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.