一、簡單演示
二、關鍵對象/方法的分析
本期延續上期的內容,介紹另一種控件——選項按鈕。
OLEObject
包括 ActiveX 控件,一個鏈接式或內嵌 OLE 對象。
ActiveX 控件的屬性非常多,包括 Shape 常見的一些屬性,它都有,比如:
- Left,左側距離
- Top,頂端距離
- Width,寬度
- Height,高度
- TopLeftCell,左上角所在的單元格
Placement,與所在的單元格之間的附屬關係
此外,它還有些比較少見的屬性,比如:
- MousePointer,鼠標指針的樣式
- TripleState,僅對複選框或切換按鈕有效,增加第三種選擇狀態
- SpecialEffect,改變樣式
- Caption,標題
- GroupName,組別
- LinkedCell,與控件關聯的單元格
三、用法展示及說明
1. 通過宏自動生成選項按鈕並定義屬性
跟複選框一樣,在 插入 菜單和 開發工具 菜單下面,分別有兩種選項按鈕,本期就不再測試它們的不同。
我們先試試這些選項按鈕,是不是能起到單選題的效果——
我們試幾次,確實每道題,只能有其中一個處於選中狀態,而不同的題,選項按鈕之間並不會有相互影響。那麼,怎麼確定選項按鈕的分組的呢?答案就是——通過選項按鈕的一個屬性 GroupName 來確定的,後面我們再回過來看。
我們先從生成按鈕慢慢往下走。
rmax,懶人必備的變量。
cmax,這裡取的是每一行的最大列號,所以即使不同題目選項數量不同的時候,也能準確生成準確數量的選項。
Forms.OptionButton.1 這是選項按鈕的程序設計標識符,在之前那個表可以查到。
Width,Height,Left 和 Top,定義選項按鈕的寬度,高度以及位置。
接著的後面這些,就是對按鈕其它的一些屬性設置。
GroupName,就是剛才提到的,確定選項按鈕如何進行配對的一個重要屬性。如果 GroupName 一樣的,那麼這些選項按鈕就是一組的,只能有一個按鈕處於選中狀態。我們這裡,同組的按鈕,都在同一行,所以,直接用所在單元格的 行號 作為 GroupName 就可以了。
Caption,選項按鈕的標題內容,取對應單元格的內容就可以了,然後,把這個單元格的內容清空。
2. 結果輸出為PDF
我們來到另外一個子過程OptionAnswer()。比較簡單的一個子過程,跟上期一樣,就是把 Excel 另存為 PDF 格式,基本是些格式化的語句了,不囉嗦。
閱讀更多 叮不當 的文章