在前面文章中,我們建立了“省市區”三級聯動的效果,但是發現一個問題:修改第一級和第二級的目錄,後邊的層級不會跟隨變化,也不會清除數據。
所以採用
宏
去處理,這裏使用的是vba。
將下列代碼複製進編輯器,對應的單元格修改,就會觸發時間。
//代碼中包含三個部分:1、三級列表變化的部分、
///2、計算觸發的部分、3、根據前一個單元格的值顯示數據的部分
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Row < 2 Then Exit Sub '修改第一行(標題)不往下執行
For Each Rng In Target
'三級列表聯動
If Rng.Column = 1 Then '修改一級標題
Rng.Offset(0, 1).ClearContents '清除二級
End If
If Rng.Column = 2 Then '修改二級
Rng.Offset(0, 1).ClearContents '清除三級
End If
'計算除法
If Rng.Column = 6 Then
If Rng.Value <> 0 Then
Rng.Offset(0, 2) = Rng.Offset(0, 1) / Rng
End If
End If
If Rng.Column = 7 Then
If Rng.Offset(0, -1).Value <> 0 Then
Rng.Offset(0, 1) = Rng / Rng.Offset(0, -1)
End If
End If
If Rng.Column = 8 Then
If Rng.Offset(0, -2).Value <> 0 Then
Rng = Rng.Offset(0, -1) / Rng.Offset(0, -2)
If Rng.Value >= 0.95 Then
Rng.Offset(0, 1).Value = "是"
Else
Rng.Offset(0, 1).Value = "否"
End If
End If
End If
'根據數字顯示
If Rng.Column = 9 Then
If Rng.Offset(0, -1).Value >= 0.95 Then
Rng.Value = "是"
Else
Rng.Value = "否"
End If
End If
Next
End Sub