【Excel VBA】- 為表格中一行內容添加刪除線

女神節當天,在牛閃閃的日子1群中,有位河南的朋友諮詢了一個看似簡單的問題,詳情請看下圖:

看到此問題,第一反應就是設置單元格字體格式,從而增加刪除線,具體操作請見如下動態圖。

如上動態圖中,第一次選中第8行,然後設置單元格格式字體刪除線。隨後選中的12、15和16行,都是按下鍵盤上的快捷鍵F4重複上一操作完成的。

從問題截圖來看,這位河南朋友想要的結果不是上圖中的效果,而是希望刪除線連成線。找了許久,沒有發現Excel有此功能,所以只能想一個變通的方法,配合形狀中的線條來完成。最終達到的效果如下:

如上動態圖中是為了方便查看才設置了一個按鈕,為了更加方便可以為編寫的宏設置快捷鍵,按下鍵盤上快捷鍵即可快速設置「刪除線」。

可以看到,為宏test設置快捷鍵為Ctrl+Shift+R,即可快速設置刪除線,而不需要點擊按鈕。

好,接下來就是見證奇蹟代碼的時刻^_^

Sub test()

Dim calcHeight1, calcHeight2 As LongPtr

Dim calcWidth1, calcWidth2 As LongPtr

row1 = Range(Selection.Address).Row

row2 = Range(Selection.Address).Rows.Count + row1 - 1

col1 = Range(Selection.Address).Column

col2 = Range(Selection.Address).Columns.Count + col1 - 1

calcHeight1 = 0

calcHeight2 = 0

For i = 1 To row1 - 1

calcHeight1 = calcHeight1 + Cells(i, 1).Height

Next

For i = row1 To row2

calcHeight2 = calcHeight2 + Cells(i, 1).Height

Next

calcHeight2 = calcHeight1 + calcHeight2

calcWidth1 = 0

calcWidth2 = 0

For i = 1 To col1 - 1

calcWidth1 = calcWidth1 + Cells(1, i).Width

Next

For i = col1 To col2

calcWidth2 = calcWidth2 + Cells(1, i).Width

Next

calcWidth2 = calcWidth1 + calcWidth2

下面的代碼不要問我怎麼記住的,我是錄製宏後加以修改的^_^

ActiveSheet.Shapes.AddConnector(msoConnectorStraight, calcWidth1, (calcHeight1 + calcHeight2) / 2, calcWidth2, (calcHeight1 + calcHeight2) / 2).Select

With Selection.ShapeRange.Line

.Visible = msoTrue

.ForeColor.ObjectThemeColor = msoThemeColorText1

.Weight = 1.5

End With

End Sub

各位小夥伴如果有更好的辦法解決此問題,歡迎交流學習~~Written by Steven in 20170309^_^

微信公眾號:SaveUTime

SUT學習交流群:615356012,入群審核人:Steven

關注公眾號,提高效率,節約您的時間!


推薦閱讀:

新人推薦:zoeybobby
新人推介:zuzu
新人推介:程嬡
你和美人之間,或許只差了一個眼神的距離

TAG:VBA | 女神 | 宏计算机 |