VSTO插件功能介紹-清除空行【進化過程】

大家看到的是完成的成果,

ba95a344e0562635ba4bf61b26a17bc7.png

可能不知在其中,寫碼人的艱辛

今天的主要是記錄【進化過程】

用于自勉,與大家共勉,努力

文章中的代碼你可復制使用哦

想要的效果

若用戶選擇了區域,選擇確定Button對此區域,進行清除空行

若用戶想要本表所用區域,選擇取消Button,對本表所用區域,進行清除空行

思路

1.? 出現對話框,用戶選擇區域,選擇Button

2.? 判斷用戶是否選擇,如果不選擇,就賦值Usedrange,如果選擇但行數<2行(此時用戶是鼠標點在一個單元格中)賦值Usedrange,如果行數>2行,說明用戶是做了選擇區域啦賦值SelectRngs

3.? 下面要運行判斷,計算行如果數據CountA=0,刪除行,否則不刪除

【第一版本】

'清除空行
PublicSub DeleteEmptyRowsInSelection()
Dim ActSht As Excel.Worksheet = xlapp.ActiveSheet
Dim UsedRngs As Excel.Range = ActSht.UsedRange
Dim rngs As Excel.Range
Dim oneRng As Excel.Range
Dim r AsInteger
Dim startRow AsInteger
Dim endRow AsInteger
'Dim SelectRngs As Excel.Range
On ErrorResumeNext
Dim SelectRngs As Excel.Range = xlapp.InputBox(Prompt:="選擇區域:"+ vbCrLf +"1.選擇、確定=你選擇區域"+ vbCrLf +"2.取消=默認是本表所用區域", Title:="請選擇",Default:=xlapp.Selection.address,Type:=8)
On ErrorGoTo0
If IsNothing(SelectRngs)Thenrngs = UsedRngs
Else
If SelectRngs.Rows.Count <2Thenrngs = UsedRngs
Elserngs = SelectRngs
EndIf
EndIf' 檢查選擇區域是否為空
'第1版本:(這種有點問題,特別是兩個空行時)
For Each oneRng In rngs.Rows
If xlapp.Application.WorksheetFunction.CountA(oneRng)=0Then
' 如果沒有數據,刪除該行oneRng.EntireRow.Delete()
'oneRng.EntireRow.Interior.ColorIndex = 20
EndIf
Next
EndSub

【出現問題】

fdc3ec4d1caac17c4092a364a79041e4.png

【第2版本】第2版本

With ActSht
'獲取選擇區域的開始和結束行號startRow = rngs.RowendRow = startRow + rngs.Rows.Count -1
' 從最后一行開始向上遍歷,避免索引問題
For r = endRow To startRow Step-1
' 檢查整行是否有數據
If xlapp.Application.WorksheetFunction.CountA(rngs.Rows(r - startRow +1))=0Then
' 如果沒有數據,刪除該行.Rows(r).Delete
EndIf
Next r
EndWith
EndSub

【第2-1版本】

.CountA(rngs.CountA(rngs.Rows(r))=0

【出現問題】

139b94439ca62f61a7ac10ab5a0cca74.png一開始也不知出現在那里

后來用這個

MsgBox(.Address + "-" + r.ToString() + "-" + .Rows(r).Address)

輸出相關的內容,進行檢測,才能看到問題所在

后有修改成以下情況

【第2-2版本】

.CountA(rngs.CountA(rngs.Rows(r - startRow +1))=0

可以進行正確的刪除

【出現問題】

9536459b7ceee80c56634a82ed8012af.png因為在WithActSht中運行,所以刪除是本表的行,

如果區域內的刪除,就會出錯連帶也刪除了外部的數據

【第3版本】

'第3版本
With rngs
'獲取選擇區域的開始和結束行號TotalRows = .Rows.Count
' 從最后一行開始向上遍歷,避免索引問題
For r = TotalRows To1Step-1
' 檢查整行是否有數據MsgBox(.Address +"-"+ r.ToString()+"-"+ .Rows(r).Address)
If xlapp.Application.WorksheetFunction.CountA(.Rows(r))=0Then
' 如果沒有數據,刪除該行.Rows(r).Delete
EndIf
Next r
EndWith

在本區域中運行,不影響外部,

先計算區域的總行數,

從最大行開始逆序計算,若為CountA=0,刪除本區域

完成

==提示==

插件命名:“哆哆Excel”,日前沒打包,

主要是自用,提高工作效率

大部分代碼,請看歷史文章

b0dbbf8642feb451cd47de5c9769c99d.png

=若你有收獲,請分享給朋友免費學習=

f094b3bb712742de447d4b06644655d0.jpeg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44588.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄算法訓練營Day64|拓撲排序(卡碼網117)、dijkstra樸素版

拓撲排序 117. 軟件構建 (kamacoder.com) 拓撲排序簡單的說是將一個有向圖轉為線性的排序。 它將圖中的所有結點排序成一個線性序列&#xff0c;使得對于任何的邊uv&#xff0c;結點u在序列中都出現在結點v之前&#xff0c;這樣的序列滿足圖中所有的前驅-后繼關系。 拓撲排…

vue 插槽 【slot】

文章目錄 默認插槽具名插槽作用域插槽 默認插槽 父組件中&#xff1a;<Category title"今日熱門游戲"><ul><li v-for"g in games" :key"g.id">{{ g.name }}</li></ul></Category> 子組件中&#xff1a;<…

9. 機器人數目

題目描述 本題為填空題&#xff0c;只需要算出結果后&#xff0c;在代碼中使用輸出語句將所填結果輸出即可。 少年宮新近郵購了小機器人配件&#xff0c;共有3類。 &#x1d434;A 類含有&#xff1a;88 個輪子&#xff0c;11 個傳感器&#xff1b; &#x1d435;B 類含有:…

深入理解基本數據結構:棧詳解

引言 在計算機科學中&#xff0c;數據結構是存儲、組織和管理數據的方式。棧是一種重要的線性數據結構&#xff0c;廣泛應用于各種編程場景。在這篇博客中&#xff0c;我們將詳細探討棧的定義、特點、操作及其在不同編程語言中的實現。 什么是棧&#xff1f; **棧&#xff08…

java動態代理的使用和代碼示例

文章目錄 1. 簡介2. 代碼3. 參考鏈接 1. 簡介 代理類在程序運行時創建的代理方式被成為動態代理。在靜態代理中&#xff0c;代理類&#xff08;RenterProxy&#xff09;是自己已經定義好了的&#xff0c;在程序運行之前就已經編譯完成。而動態代理是在運行時根據我們在Java代碼…

前端vue 實現取色板 的選擇

大概就是這樣的 一般的web端框架 都有自帶的 的 比如 ant-design t-design 等 前端框架 都是帶有這個的 如果遇到沒有的我們可以自己嘗試開發一下 簡單 的 肯定比不上人家的 但是能用 能看 說的過去 我直接上代碼了 其實這個取色板 就是一個input type 是color 的input …

CTF學習記錄(一)——Web基礎

目錄 Web基礎Web基礎常用工具ncat(網絡工具中的瑞士軍刀&#xff0c;功能齊全)curl(一個工作在命令行的發起HTTP請求的工具)BurpSuite(Web核心抓包工具)Hackbar插件SwitchyOmega 代理插件&#xff08;非常牛逼&#xff09;Wappalyzer 技術判斷插件EditThisCookie 插件Postman 接…

深入理解Spring Boot中的定時任務調度

深入理解Spring Boot中的定時任務調度 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. Spring Boot中的定時任務概述 在現代應用程序開發中&#xff0c;定時任務調度是一項非常常見和重要的功能…

【計算機網絡03】不花錢怎么搭建一個網絡實驗室

使用GNS3和虛擬機搭建網絡實驗室 1、安裝抓包工具分析數據包2、定義和使用抓包篩選器3、安裝和配置GNS34、配置路由器和VPCS5、使用WireShark捕獲GNS3網絡數據包6、VMware創建虛擬機7、使用思科PacketTracer 1、安裝抓包工具分析數據包 官網安裝wireshark&#xff1a;https://…

python怎么判斷字符串以什么結尾

在python編輯器中新建一個data.py。 寫上自己的注釋。 然后新建一個變量testname。 利用endswith來判斷字符串是不是以“ar”結尾。 將結果打印出來。 選擇“run”->“run”。 運行該程序&#xff0c;如果是&#xff0c;就會返回true。

JavaScript-日期對象

日期對象 作用&#xff1a;用來表示時間的對象 獲取當前時間 const datenew Date();console.log(date);可以得到日期對象&#xff0c;里面的屬性有星期&#xff0c;年月日&#xff0c;時分秒 獲取指定時間 const datenew Date(2023-05-01);console.log(date); 獲取時間戳 時間…

PyTorch深度學習實戰(45)——強化學習

PyTorch深度學習實戰&#xff08;45&#xff09;——強化學習 0. 前言1. 強化學習基礎1.1 基本概念1.2 馬爾科夫決策過程1.3 目標函數1.4 智能體學習過程 2. 計算狀態值3. 計算狀態-動作值4. Q 學習4.1 Q 值4.2 Gym環境4.3 構建 Q 表4.4 探索-利用策略 小結系列鏈接 0. 前言 強…

悠律凝聲環開放式耳機體驗:強勁低音、高顏值設計

最近發現了一款潮酷的開放式耳機&#xff0c;不僅顏值抗打&#xff0c;更重要的是能在嘈雜的環境中提供給我一份寧靜的沉浸式音樂體驗&#xff0c;號稱是開放音頻中的重低音之王&#xff0c;它就是悠律凝聲環開放式耳機。 這款耳機無論其外觀設計、音質效果、性價比以及續航能力…

通勤數據:Comma2k19 數據集

A Commute in Data: The comma2k19 Dataset 通勤數據&#xff1a;Comma2k19 數據集 https://arxiv.org/pdf/1812.05752v1 Abstract— comma.ai presents comma2k19, a dataset of over 33 hours of commute in California’s 280 highway. This means 2019 segments, 1 minut…

js實現尋找數組中滿足某個條件的對象,以及找到下標后,在數組中插入某個對象

let ItemIndex fileList.findIndex((item) > { return item.xxx 你要找的屬性值 }); if(ItemIndex > -1){ // 代表找到了這個元素 } else { } 參考百度AI: 在JavaScript中&#xff0c;?可以使用splice()方法在指定位置插入一個或多個對象到數組…

npm、cnpm、pnpm、yarn的區別

npm, cnpm, pnpm, 和 yarn 都是 JavaScript 的包管理工具&#xff0c;用于自動化處理包的安裝、更新、配置和管理。它們之間的主要區別在于它們各自的實現方式、性能優化、以及一些特有的功能。 npm npm (Node Package Manager) 是 Node.js 的默認包管理器&#xff0c;也是最…

「媒體邀約」上海請媒體的費用

傳媒如春雨&#xff0c;潤物細無聲&#xff0c;大家好&#xff0c;我是51媒體網胡老師。 上海無疑是最具活動的城市之一&#xff0c;各種大大小小的論壇、發布會、展覽展會應接不暇&#xff0c;那么在上海做活動想邀請媒體進行宣傳報道&#xff0c;需要多少費用呢&#xff1a;…

Android --- 運行時Fragment如何獲取Activity中的數據,又如何將數據傳遞到Activity中呢?

1.通過 getActivity() 方法獲取 Activity 實例&#xff1a; 在 Fragment 中&#xff0c;可以通過 getActivity() 方法獲取當前 Fragment 所依附的 Activity 實例。然后可以調用 Activity 的公共方法或者直接訪問 Activity 的字段來獲取數據。 // 在 Fragment 中獲取 Activity…

手慢無,速看︱PMO大會內部學習資料

全國PMO專業人士年度盛會 每屆PMO大會&#xff0c;組委會都把所有演講嘉賓的PPT印刷在了會刊里面&#xff0c;供大家會后回顧與深入學習。 第十三屆中國PMO大會-會刊 《2024第十三屆中國PMO大會-會刊》 &#xff08;內含演講PPT&#xff09; 會刊&#xff1a;750個頁碼&…

代碼隨想錄-DAY④-鏈表——leetcode 24 | 19 | 142

24 思路 如果 pre 的后面沒有節點或者只有一個節點&#xff0c;則沒有更多的節點需要交換, 否則&#xff0c;通過更新節點的指針關系交換 pre 后面的兩個節點&#xff0c; 最后&#xff0c;返回新的鏈表的頭節點 dummyhead->next。 時間復雜度&#xff1a;O(n) 空間復雜…