返回列表 上一主題 發帖

Excel VBA如何檢查_含有註解格數量

Excel VBA如何檢查_含有註解格數量

各位前輩好
1.請教 檢查_含有註解格數量 的程式碼
2.這程式的目的是為了檢查 因儲存格列大量刪除,而其它儲存格的註解實際位置跑得很遠,很不方便編輯註解
2.1.以下程式碼是自己想的土方法
3.有其它方法嗎?
4.Andy想進步!請指教

請各位前輩指教 謝謝

Sub 檢查_含有註解格數量()
Dim uR As Range, hascomN&, hascomAD$, msg$, hascomRng As Range
Dim L&, T&, hascomERRN&
On Error GoTo 101
hascomN = 0
msg = "沒有 註解格"
Set hascomRng = check_Area.SpecialCells(xlCellTypeComments)
On Error GoTo 0
On Error Resume Next
For Each uR In hascomRng
   If Not uR Is Nothing Then
      hascomN = hascomN + 1
      If hascomAD = "" Then
         hascomAD = uR.Address
         Else
            hascomAD = hascomAD & "," & uR.Address
      End If
      With uR.Comment.Shape
         L = .Left - (uR.Left + uR.Width + 200)
         T = .Top - (uR.Top + 50)
      End With
      If L > 0 Or T > 0 Then
         hascomERRN = hascomERRN + 1
      End If
   End If
Next
If hascomN > 20 Then
   If hascomERRN > 0 Then
      msg = "1.含有註解格太多!不顯示格位" & Chr(10) & "2.註解實際位置跑掉的格: " & hascomERRN & " 個"
      Else
         msg = "1.含有註解格太多!不顯示格位" & Chr(10) & "2.沒有註解實際位置跑掉的格"
   End If
   ElseIf hascomN <> 0 Then
      If hascomERRN > 0 Then
         msg = "1.有註解儲存格格位: " & hascomAD & Chr(10) & "2.註解實際位置跑掉的格: " & hascomERRN & " 個"
         Else
            msg = "1.有註解儲存格格位: " & hascomAD & Chr(10) & "2.沒有註解實際位置跑掉的格"
      End If
   Else
      msg = "沒有 註解格"
End If

101
ck_K = "檢查_含有註解格數量"
ck_Q = hascomN
ck_W = msg
If hascomERRN > 0 Then
   ck_AC = "程式可以自動調整註解位置"
   Call 設清單_I欄
   Call 當列上色
   
   Else
      ck_AC = "NA"
End If
On Error GoTo 0
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

回復 2# ikboy
收到 謝謝前輩指導
星期一才有辦法用PC做測試 學習
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2020-8-10 07:59 編輯

回復 2# ikboy


ikboy前輩您好
1.測試結果跟想要的結果不一樣,Andy沒有表達清楚!抱歉
2您提供的程式碼沒看過 感覺很艱深!恐怕不是Andy這等學淺的看得懂的
   如果您有空 請再指導 標註一下程式碼的意思 謝謝您
3.上傳範例檔表達情境,請前輩們再指導
20200810_1.rar (12.44 KB)
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 5# n7822123


    謝謝前輩指導
1.認識了 Parent 的概念
MsgBox ActiveCell.Comment.Parent.Address
MsgBox ActiveCell.Parent.Name
MsgBox ActiveSheet.Parent.Name

2.Option Explicit    以後也會養成習慣

3.再請教前輩 網查 Const 是常數的意思,有用它跟沒用都可以執行
3.1.在程式的設計上 Const 有甚麼時候是非用不可呢? 請您再指導
Const L = 20: Const T = 20

Dim  L&, T&
L = 20:  T = 20
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 8# GBKEE


    謝謝前輩指導
1.Const 指定變數固定的內容
1.1.以前都用副程式的方式呼叫這常數
1.2.運用Const 放在模組上方
1.2.1.做為全域常數
1.2.2.也可在Code裡,但意義不同
以上學習心得 如有前輩可指導 請不吝指導

以前的土方法
Option Explicit
Public 存款利率 As Double
Sub 定義存款利率()
存款利率 = 0.03
End Sub

Sub 普通存款利率()
Call 定義存款利率
MsgBox 存款利率
End Sub

Sub 優惠存款利率()
Call 定義存款利率
MsgBox 存款利率 * 1.1
End Sub

Sub 大額存款超優利率()
Call 定義存款利率
MsgBox 存款利率 * 1.5
End Sub

Sub 董事特超優利率別()
Dim 存款利率 As Double
存款利率 = 0.06
MsgBox 存款利率
Call 普通存款利率
Call 優惠存款利率
Call 大額存款超優利率
End Sub

'運用Const
Option Explicit
Const 存款利率 = 0.03
Sub 普通存款利率()
MsgBox 存款利率
End Sub

Sub 優惠存款利率()
MsgBox 存款利率 * 1.1
End Sub

Sub 大額存款超優利率()
MsgBox 存款利率 * 1.5
End Sub

Sub 董事特超優利率別()
Const 存款利率 = 0.06 '可以另外定義此常數
MsgBox 存款利率
Call 普通存款利率 '但不影響全域的 存款利率 = 0.03
Call 優惠存款利率
Call 大額存款超優利率
End Sub

2.Function一直式跨不過去的門檻
2.1.Andy 愚鈍需要較長時間研習
2.2.前輩提供的範例是自己的題材,希望藉此能跨過

謝謝各位前輩指導
您的指導如果沒有即時回應: 研習中或不方便回應(工作忙.沒有PC可測試....)
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# ikboy


    謝謝前輩指導
Andy愚鈍 需要再花點時間研習您的指導
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# ikboy


    謝謝各位前輩指導
1.Andy沒有矯情!要承認今天才懂Debug.Print: 在即時運算窗顯示結果
1.1.對ikboy前輩很抱歉!在4樓 提到 測試結果跟想要的結果不一樣是 因為不會用 Debug.Print
1.2.還被一長串的程式碼嚇到,當下以為是前輩會錯意
1.3.衍伸後來各位前輩的再指導
2.謝謝各位前輩耐心指導
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 6# n7822123


    前輩的指導很客氣 謝謝
1.檢討了自己的觀念問題
1.1.直接找註解就可以了,何必一格格的找?
1.2.必竟整表註解的數量定比儲存格樹量少
1.3.要找註解數量或註解位置跑掉的數量!就整表都找就好了,何必局限在某區域
2.謝謝前輩指導
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題