您當前所在的位置:主頁 > 新聞資訊 > 公司新聞 >

零基礎學Excel VBA-WE017「VBA 冷門的復選框應用」

一、簡單演示

二、關鍵對象/方法的分析

OLEObject

包括 ActiveX 控件,一個鏈接式或內嵌 OLE 對象。我們這期只涉及 ActiveX控件。

什么是 ActiveX 控件呢?其實就是 開發工具 菜單這里,我們今天的主角 復選框,就在這里。

這些控件,用一個叫程序設計標識符的代號來標識,程序設計標識符的縮寫為 ProgID, 是一串沒有空格的字符串:

ActiveX 控件的屬性非常多,包括 Shape 常見的一些屬性,它都有,比如:

Left,左側距離

Top,頂端距離

Width,寬度

Height,高度

TopLeftCell,左上角所在的單元格

Placement,與所在的單元格之間的附屬關系

此外,它還有些比較少見的屬性,比如:

MousePointer,鼠標指針的樣式

TripleState,僅對復選框或切換按鈕有效,增加第三種選擇狀態

SpecialEffect,改變樣式

Caption,標題

GroupName,組別

LinkedCell,與控件關聯的單元格

等等,還有很多。

但還好,這些控件可用的方法很少,基本上,我們把這些控件創建出來,調整好需要的樣式,使用就可以了。

三、用法展示及說明

1. 用宏生成復選框,并定義屬性

為了方便,我們用宏自動生成所需要的復選框。

這個表格,我們先把復選框都刪掉。

我們看一下這個刪除的宏,其實就一個 For Each 語句。

后面這個取值,把答案區域還原,只是方便測試用。

刪除完了,我們再創建一次,創建出來的復選框,位置是固定的,左鍵右鍵都拉不動。

復選框,在菜單這里,也可以手動進行插入,而且有兩種不同的復選框:

第一種,在插入菜單這里——

第二種,在開發工具這里——

注意,我們手動插入這些控件以后, WPS 會自動進入設計模式,這個模式下,所有控件都是可以移動的。

把設計模式關掉,現在再試試——

在 插入 菜單中的復選框,通過右鍵選中后,是可以進行移動的。

而在 開發工具 菜單中的復選框,跟我們宏所生成的,是一樣的,位置固定的。

我們再試試 刪除復選框 這個按鈕,有意思的是,插入 菜單中的復選框,并沒有被刪掉。為什么呢?

我們刪除的宏,是對 OLEObject 進行選擇,但在 插入 菜單這里的控件,都不屬于 OLEObject。

比如說,我們常用的這個按鈕,它屬于 Button。而這個復選框,它屬于 CheckBoxes,如果要選擇它們,可以用下面的語句:

For Each cb In ActiveSheet.CheckBoxes

cb.Delete

Next

插入 菜單這里的控件,可以理解為是經過了簡化和美化的,屬性非常少,適合簡單使用場景。

而 開發工具 菜單這里的,則有非常多的屬性,跟宏搭配使用,更加合適。

好,再次生成復選框,手動刪掉添加的這個,繼續看我們的宏語句。

這里,又用到了 rmax,這個變量我非常喜歡用,這樣子,我們在工作表中增減新的行,宏也不用動了,一勞永逸,懶人,總得想些懶招。

接著下一句,Forms.checkbox.1 就是復選框的標識符,然后前面加個 With,這樣,創建以后,可以非常方便的指定一系列的屬性。

Height,試幾個數字以后,選個大小最合適的就可以了。

Width,Left 和 Top 這里,用到了對應單元格的寬度和高度,還有一些簡單公式,讓生成的復選框,可以自動適配單元格。

接著的后面這些,就是對復選框的一些設置,注意個地方,就是 .Object,有的屬性不要加這個,有的屬于又需要,至于什么標準,幫助說明也沒有提,而且最過分的是,插入 菜單中的復選框,跟我們現在宏這里創建的復選框,命令的用法也不一樣。具體什么區別,有興趣的朋友可以自己試試——沒興趣就算了,反正試出來也沒多大用處。

另外還有一個,就是 TripleState 這個屬性,設置為 True 以后,復選框在現在打勾和空白兩種狀態的基礎上,再添加一種淺色打勾的狀態。

2. 結果輸出為PDF

我們來到另外一個子過程 CheckAnswer() 。比較簡單的一個子過程,就是把 Excel 另存為 PDF 格式,基本是些格式化的語句了,不啰嗦。

好了,本期的內容就這樣,本期的宏代碼,并不實用,但希望通過本期的介紹,能為大家增添一種新的做表格的元素。而且,也是后面將會介紹的用戶窗體的基礎。

上一篇:老年人飲食應做到十個“宜” 下一篇:沒有了

在線客服

  • 點擊這里給我發消息
  • 二維碼

    微信掃一掃

快乐赛车是不是官方的