• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Pasteで増やしたフレーム内のボタン操作)

Pasteで増やしたフレーム内のボタン操作

このQ&Aのポイント
  • 増やしたフレーム内のボタン操作について質問です。
  • 増やした後のボタン操作ができない状況に困っています。
  • 特定のフレーム内のテキストボックス内容を消去したいという要望があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

No.1の コピペ忘れです。 Private Sub UserForm_Initialize() の前、というかフォームモジュールの先頭に Private mCmdButton() As Class1 を追加してください。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

> 過去の質問でユーザーフォーム内のFrameをコピペして増やすという下記のがありました。 > https://okwave.jp/qa/q9794555.html この後日にボタンを追加してセルの値を参照するコードの回答があったと思いますが、URLが分からないので その時のコードにセルに値を参照する部分を削除してテキストボックスをクリアする動作を追加したものです。 無駄な部分やTextBoxは先頭だけにしか対応していませんので変更してください。 Call Make_Eventの部分(2か所)でクリックの動作を設定しています。 Private Sub UserForm_Initialize() Dim j As Long Me.Frame1.SetFocus Me.大外フレーム.Copy Call Make_Event(1, Me.Controls("TextBox1").Name) For j = 1 To 10 Me.大外フレーム.Paste With Me.Controls("Frame" & j + 1) .Caption = "Frame" & j + 1 .Left = Me.Frame1.Left .Top = Me.Frame1.Top + Me.Frame1.Height * j End With Me.Controls("TextBox" & j * 3 + 1).Value = Me.Controls("TextBox" & j * 3 + 1).Name Me.Controls("TextBox" & j * 3 + 2).Value = Me.Controls("TextBox" & j * 3 + 2).Name Me.Controls("TextBox" & j * 3 + 3).Value = Sheets("Sheet1").Range("A1").Value 'Me.Controls("TextBox" & j * 3 + 3).Name Me.Controls("CommandButton" & j + 1).Caption = Me.Controls("CommandButton" & j + 1).Name Call Make_Event(j + 1, Me.Controls("TextBox" & j * 3 + 1).Name) Next Me.大外フレーム.ScrollHeight = Me.大外フレーム.ScrollHeight + Me.Frame1.Height * j 'j=(Past回数+1) End Sub Function Make_Event(ByVal i As Long, ByVal mBoxNameX As String) ReDim Preserve mCmdButton(i) Set mCmdButton(i) = New Class1 mCmdButton(i).SetCtrl Me("CommandButton" & i), mBoxNameX End Function クラスモジュールを追加して Class1のコードを以下にしてください。 Private WithEvents Target As MSForms.CommandButton Private mBoxName As String '新しくイベントを作成する Public Sub SetCtrl(New_Ctrl As MSForms.CommandButton, ByVal mBoxNameX As String) Set Target = New_Ctrl mBoxName = mBoxNameX End Sub Private Sub Target_Click() UserForm1.Controls(mBoxName).Value = "" End Sub

ilovethekaraage
質問者

お礼

kkkkkm様、早速のご回答有難うございました。 一旦、ご回答いただいた内容をそのまま新規フォームにコピペして動作するか試したところ、なかなか動かすことができず、Class1など今まで知らなかったこと等を調べながら修正を行ったところ無事TextBox4以降の先頭のTextBoxの消去ができるようになりました。 現在はTextBox5とTextBox6以降の2番目、3番目のTextBoxを消去できるようにしたいので、FormソースとClass1とにらめっこしながら取り組んでいますがまだまだ未熟なもので簡単にはできなさそうです。 取り急ぎお礼までご連絡させていただきます。

関連するQ&A