Board logo

標題: [發問] 如何用選項鈕方式來輸入資料? [打印本頁]

作者: q1a2z5    時間: 2011-5-4 08:57     標題: 如何用選項鈕方式來輸入資料?

本帖最後由 q1a2z5 於 2011-5-4 08:59 編輯

如何用選項鈕方式在A1至A100依序輸入資料呢?
謝謝!
作者: oobird    時間: 2011-5-4 10:58

若只有這幾個選項,就分別寫Click事件
Private Sub OptionButton1_Click()
Dim r As Range
With ActiveSheet
Set r = IIf(.[a1] = "", .[a1], .[a65536].End(3)(2, 1))
r = OptionButton1.Caption
End With
End Sub
----------------------------------------
Private Sub OptionButton2_Click()
Dim r As Range
With ActiveSheet
Set r = IIf(.[a1] = "", .[a1], .[a65536].End(3)(2, 1))
r = OptionButton2.Caption
End With
End Sub
多的話就用物件類別模組作個集合,指定Click事件
這樣你須要附檔案上來
作者: q1a2z5    時間: 2011-5-5 14:50

謝謝你的解答,我將選項鈕分為四區,Frame1在A欄位輸入資料;Frame2在B欄位輸入資料,依此類推..
並且將程式碼複製一大串看起來更繁雜了,如何將程式碼簡單化呢?

謝謝!
作者: GBKEE    時間: 2011-5-5 16:22

回復 3# q1a2z5
UserForm程式碼
  1. Dim MyOp() As New Class1
  2. Private Sub UserForm_Initialize()
  3.     Dim E As MSForms.Control, OP As MSForms.OptionButton, i%
  4.     For Each E In Controls
  5.         If E.Name Like "Frame*" Then
  6.             For Each OP In E.Controls
  7.                 ReDim Preserve MyOp(i)
  8.                 Set MyOp(i).OP = OP
  9.                 i = i + 1
  10.             Next
  11.         End If
  12.     Next
  13. End Sub
複製代碼
使用物件類別模組
  1. Option Explicit
  2. Public WithEvents OP As MSForms.OptionButton
  3. Private Sub OP_Click()
  4.     Dim R As Range, C%
  5.     C = Right(OP.Parent.Name, 1)
  6.     With ActiveSheet
  7.         Set R = IIf(.Cells(1, C) = "", .Cells(1, C), .Cells(Rows.Count, C).End(3)(2, 1))
  8.             R = OP.Caption
  9.     End With
  10. End Sub
複製代碼
如圖
[attach]5986[/attach]
作者: q1a2z5    時間: 2011-12-21 09:02

本帖最後由 q1a2z5 於 2011-12-21 22:14 編輯

如果Frame1選項要從B2;Frame2選項則從C2開始填入,要如何修改呢?

謝謝!
作者: GBKEE    時間: 2011-12-22 14:49

回復 5# q1a2z5
  1. Option Explicit
  2. Public WithEvents OP As MSForms.OptionButton
  3. Private Sub OP_Click()
  4.     Dim R As Range, C%
  5.     C = Right(OP.Parent.Name, 1) + 1
  6.     With ActiveSheet
  7.         Set R = IIf(.Cells(1, C) = "", .Cells(1, C), .Cells(Rows.Count, C).End(3)(2, 1))
  8.             R = OP.Caption
  9.     End With
  10. End Sub
複製代碼

作者: dechiuan999    時間: 2011-12-23 07:20

版主大大您好:
   
     使用物件類別模組的
功效如此強大。
   小弟已將此範例收藏,
日後再慢慢體會。
   另上述語法小弟有些無法領會,
請版主能再詳述。
一、
ReDim Preserve MyOp(i)
Set MyOp(i).OP = OP '設定MYOP(I)是何作用呢?
i = i + 1

二、
C = Right(OP.Parent.Name, 1) + 1
OP.Parent.Name是何含意呢?


謝謝版主大大!
作者: GBKEE    時間: 2011-12-23 18:07

本帖最後由 GBKEE 於 2011-12-23 18:13 編輯

回復 7# dechiuan999
Dim MyOp() As New Class1    ->新的 Class1(物件類別模組)
MyOp() 為動態陣列
ReDim Preserve MyOp(i)  ->陣列維數下限新增到i  
              Preserve  -> 不改變陣列原有內容
Set MyOp(i).OP = OP  -> 新增的 MyOp(i).OP=OP
   
OP.Parent.Name   ->父層  Frame
作者: dechiuan999    時間: 2011-12-24 06:14

謝謝版主大大如此
詳細說明,小弟已能理解。
只是至今尚未領會物件類別模組
的運用方式。也只能期待早點領會其
用意與方法了。

感恩大大!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)