複数のコマンドボタンを作り、それぞれのボタンから関連データを表示させたいので、Controls.Add.Tagに複数のデータを登録したく、配列Dataを作成しましたが、「型が一致しません」とエラーが表示され処理されません。
1、Tagに配列は入れられないでしょうか。
2 Tagに配列が入らない場合、複数の数値を入れる方法は内でしょうか。
以下が対象コードです。「''ここに配列を追加しました。」と「 '''配列をここに飛ばしたいです。」のコメントを入れさせていただきました。
よろしくお願いします。
Private Const MAX_CONTROL_NUMBER = 100 Private ctrlbtn(1 To MAX_CONTROL_NUMBER) As New EventButtonClass Sub UserForm_Initialize() Set myCol = New Collection Dim row As Long row = ActiveCell.row '行番号取得 With Me Dim n As Long For n = 1 To 5 Dim lbl As MSForms.Label Set lbl = .Controls.Add("Forms.Label.1", "url" & n, True) With lbl .Top = 34 * n 'Top位置(表示位置を移動する) .Left = 70 'Left位置 .Height = 20 '高さ .Width = 250 '幅 .BorderStyle = fmBorderStyleSingle '枠線 .BackColor = RGB(128, 128, 128) '背景色 .ForeColor = RGB(255, 255, 255) '文字色 .Font.Name = "メイリオ" 'テキストのスタイル .TextAlign = 2 'テキストの位置 .FontSize = 16 'テキストのサイズ .Caption = Cells(row, 5) '''ここにパスワードの題名を付ける End With Dim NewB As CommandButton Dim Data(1 To 2) ''ここに配列を追加しました。 Data(1) = row Data(2) = n Set NewB = UserForm2.Controls.Add("Forms.CommandButton.1", "url" & n, True) Call ctrlbtn(n).SetCtrl(NewB) With NewB .Top = 34 * n .Left = 10 .Height = 20 .Width = 50 .Caption = "関連データ" .Tag = Data ''ここに配列を追加しました。 End With row = row + 1 Next End With End Sub
クラスのコード
Private WithEvents tgtCtrl As MSForms.CommandButton Public Sub SetCtrl(new_ctrl As MSForms.CommandButton) Set tgtCtrl = new_ctrl End Sub Private Sub tgtCtrl_Click() Dim intRow As Long Dim intcol As Long intRow = tgtCtrl.Tag(1) '''配列をここに飛ばしたいです。 intcol = tgtCtrl.Tag(2) End Sub
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/06 10:43