| 
    
     |  | ▼Kobasan さん: 
 こんにちは
 わたしも、角田さんのホームページ「擬似の脱却」を読み返し、印刷して勉強したのですが、疑似コントロール配列までは、何とか理解できました(意味がわかる程度)、自分で作るまでには、至っていません。冬休みまでには、作れるようになりたいと、本やHPで勉強しているところです。
 コードを読んでみると、私程度でも理解できそうな気がしたので早速やってみました。ichinoseさんのコードは、私には6割程度しか理解できませんでした。変数なのか関数なのかステイトメントなのかキーワードなのかを分けてコメントをつけているのですが、難しいです。早くこの域に到達したいものです。
 
 本題ですが、新規ブックでも試してみたのですが、ラベルをクリックしてcaptionを取得して色を変えるところまでは、走るのですが、テキストボックスをクリック(マウスダウン)して、貼り付けるところができません。
 ちなみにWin2000 Excel2002です。
 
 >'■■標準モジュール
 >Public copydata As Variant '<==標準モジュールに記述すると機能する
 >
 >Sub test()
 >  UserForm1.Show
 >End Sub
 >
 >Sub ResetColor()
 >Dim i As Long
 >  For i = 1 To 30 '<==Labelの数30
 >    UserForm1.Controls("Label" & i).ForeColor = &H0  '色復元
 >  Next i
 >End Sub
 >
 >'■■Userform1のモジュール
 >Private FrmLabel(1 To 30) As New Class1   '<==Labelの数30
 >Private FrmTextBox(1 To 42) As New Class2  '<==TextBoxの数42
 >
 >Private Sub UserForm_Initialize()
 >Dim i As Long
 >  For i = 1 To 30   '<==Labelの数30
 >    With FrmLabel(i)
 >      .Item = Me.Controls("Label" & i)
 >    End With
 >  Next i
 >  '
 >  For i = 1 To 42   '<==TextBoxの数42
 >    With FrmTextBox(i)
 >      .Item2 = Me.Controls("TextBox" & i)
 >    End With
 >  Next i
 >End Sub
 >
 >Private Sub UserFom_Terminate()
 >  Erase FrmLabel
 >  Erase FrmTextBox
 >End Sub
 >
 >'■■Class1 のモジュール
 >Private WithEvents MyCtrl As MSForms.Label
 >
 >Public Property Let Item(NewCtrl As MSForms.Label)
 >  Set MyCtrl = NewCtrl
 >End Property
 >
 >Private Sub MyCtrl_Click()
 >  ResetColor
 >  MyCtrl.ForeColor = &HFF   '赤色
 >  copydata = MyCtrl.Caption   ←ここまでは確認
 >End Sub
 >
 >'■■Class2 のモジュール
 >Private WithEvents MyCtrl2 As MSForms.TextBox
 >
 >Public Property Let Item2(NewCtrl As MSForms.TextBox)
 >  Set MyCtrl2 = NewCtrl
 >End Property
 >
 >Private Sub MyCtrl2_MouseDown(ByVal Button As Integer, _
 >    ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 >  MyCtrl2.Text = copydata  ←ここが動かない
 >End Sub
 
 |  |