零基礎學Excel VBA-WE018「選項按鈕,完美生成單選題試題」

一、簡單演示

零基礎學Excel VBA-WE018「選項按鈕,完美生成單選題試題」

零基礎學Excel VBA-WE018「選項按鈕,完美生成單選題試題」

零基礎學Excel VBA-WE018「選項按鈕,完美生成單選題試題」

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

本期延續上期的內容,介紹另一種控件——選項按鈕。

OLEObject

包括 ActiveX 控件,一個鏈接式或內嵌 OLE 對象。

零基礎學Excel VBA-WE018「選項按鈕,完美生成單選題試題」

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 格式,基本是些格式化的語句了,不囉嗦。


分享到:


相關文章: