- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
7#
發表於 2012-10-9 17:21
| 只看該作者
回復 6# kai6929
不管方塊移動到何處,皆在固定的儲存格回應
一般模組的程式碼- Option Explicit
- Dim AR(1 To 2), Sh As Worksheet '模組 私用變數
- Sub AUTO_OPEN() '檔案開啟時一般模組 自動執行的檔案
- Dim S As Shape, A(), B(), i As Integer
- Set Sh = Sheets("工作表1")
- For Each S In Sh.Shapes
- If S.Type = msoTextBox Then '方塊的Type msoTextBox 值= 17
- S.OnAction = "check" '指定巨集
- ReDim Preserve A(i)
- ReDim Preserve B(i)
- A(i) = S.Name '方塊名稱
- If i = 0 Then
- Set B(i) = Sh.[d5] '指定儲存格
- Else
- Set B(i) = B(i - 1).Offset(1) '指定儲存格
- End If
- i = i + 1
- End If
- Next
- AR(1) = A '指定陣列內容
- AR(2) = B '指定陣列內容
- End Sub
- Sub check() '必須是按下方塊執行此程序
- 'AUTO_OPEN '如有錯誤 執行 AUTO_OPEN 一次
- Dim K As String, M As Boolean, i As Integer
- With Sh.Shapes(Application.Caller)
- With .TextFrame
- K = .Characters.Text
- If Left(K, 1) = "n" Then
- .Characters.Text = "o 未選取"
- M = False
- Else
- .Characters.Text = "n 選取"
- M = True
- End If
- .Characters(1, Len(K) + 1).Font.Size = 10
- .Characters(1, 1).Font.Size = 18
- End With
- i = Application.Match(.Name, AR(1), 0) - 1 '取的方塊名稱在AR(1)的索引值
- AR(2)(i).Value = M
- AR(2)(i).Offset(, 1).Value = IIf(CSng(M) = 0, 0, 1)
- End With
- End Sub
複製代碼 |
|