Excel使用筆記(二):宏之VBA使用

在前面文章中,我們建立了“省市區”三級聯動的效果,但是發現一個問題:修改第一級和第二級的目錄,後邊的層級不會跟隨變化,也不會清除數據。

所以採用去處理,這裏使用的是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


發佈了81 篇原創文章 · 獲贊 84 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章