|
▼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
|
|