當我在合并的單元格上按洗掉按鈕時出現錯誤(型別不匹配 13),但是,此錯誤僅在單元格合并時顯示,否則,不會引發錯誤,我不明白為什么,請遵循代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("AG3") Then
If Target.Value = 5 Then
Sheets("Sheet6").CommandButton6.Visible = False
Else
Sheets("Sheet6").CommandButton6.Visible = True
End If
End If
On Error Resume Next
Sheets("Sheet6").CommandButton6.Visible = False
On Error GoTo 0
End Sub
缺什么?
單元格AG3有一個從 0 到 5 不等的數字
uj5u.com熱心網友回復:
當您從合并的單元格中洗掉一個值時,Target獲取整個范圍,而不僅僅是第一個單元格。此行為與向合并單元格添加值時不同(在這種情況下,只有來自合并區域的第一個單元格會被傳入)。
例如 - 如果我D2:D8使用此事件處理程式在作業表上合并:
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Address, TypeName(Target.Value)
End Sub
在合并的單元格中輸入“測驗”會給我:
$D$2 String
并洗掉該值給了我:
$D$2:$D$8 Variant()
我才剛剛學到。
因此,請考慮查看Target.Cells(1)而不是Target(取決于您的確切用例)
uj5u.com熱心網友回復:
作業表更改:顯示命令按鈕
Target可以是任意數量的單元格。因此,最好獲取它與所需單元格的交集,如果它們相交,則繼續此交叉點(實際上是所需的單元格)。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iCell As Range: Set iCell = Intersect(Range("AG3"), Target)
If iCell Is Nothing Then Exit Sub
If iCell.Value = 5 Then
Sheets("Sheet6").CommandButton6.Visible = True
Else
Sheets("Sheet6").CommandButton6.Visible = False
End If
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452098.html
