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

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

kkkkkmの回答

  • kkkkkm
  • ベストアンサー率65% (1645/2495)
回答No.5

No.4で For i = 1 To 3 mBoxNameF(i) = Me.Controls("TextBox" & i).Name Next の後の Call Make_Event(1, mBoxNameF) が抜けてました。 で、いまさらですが mBoxNameF(i) = Me.Controls("TextBox" & i).Name は mBoxNameF(i) = "TextBox" & i でいけると思います。 後のほうのも同じような感じで。 多分、最初に何かの都合でテスト的にそのようにしたものをそのまま流用したのだと思います。

ilovethekaraage
質問者

お礼

kkkkkm様 いつも有難うございます。 こちらNo2で試したところ期待した動きになりました。 またご指摘いただきました昨晩の【PC1】で正常動作した「For i 文」のVBAをそのままPC2へ持っていきVBA実行したところダメな動きしかしませんでした。 元々「For i 文」のままですとご指摘いただきました通り、For i = 1 to 3の最後の3番目の値によって1、2が上書きされているようですので当然と言えば当然の動きですね。 Office2021ですと何故か私が期待した通りに動いたので本当に謎です。 さて、すみません。ここからまた長いです。。。 これでようやく完成できるぞ!と意気揚々と本番ファイルに書き込もうとしたのですが・・・ここで問題が発生しました。その本番ファイルのFrame内にはTextBoxが5個、ComboBoxが15個の合計オブジェクト数が20個なのです。そこでお教えいただいたTextBox3つ分のスクリプトを少しずつ修正していきました。 最初からいきなり本番ファイルの20個全部でやってみたのですがComboBoxの場合はどうなんだ?という感じで迷いと不安で頭の中がぐちゃぐちゃになってしまったため結局テストファイルを新たに作って動作確認と修正作業を行いました。オブジェクト数が12個(それぞれ6個ずつ)までは正常動作を確認できましたが、そこから欲張って24個に増やしたところ途端に動かなくなりました。私の記述のどこかが間違っているのかもしれませんが、そこから数を15まで減らしたりしましたが結局エラーが出るようになってしまったので本日は諦めました。 先程、もう少し良い方法がないか考えたところFrameに基づく消去ボタンを押下した際の動作なので、Frame内の全Boxを消去すれば良いのでは?という結論に達しました。 20個分の変数引渡は可動性も悪いですし。。。何より修正が大変でしたので。(^_^;) 明日からFrame内の全Boxをすべて消去できるよう色々と試してみようと思います。有難うございました!

関連するQ&A

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

    過去の質問でユーザーフォーム内のFrameをコピペして増やすという下記のがありました。 https://okwave.jp/qa/q9794555.html 上記の通りFrameとその中にあるTextBoxやボタンは期待通りに必要な分だけ増やすことができましたが、増やした後のボタン操作等ができません。オブジェクト名がCommandButton4から始まっているのは分かったので、Private Sub CommandButton4_Click()と簡単な処理を先に記述してもダメでした。 やりたいことのイメージとしては下記URLのFrame2以降の中にあるボタンを押下した際に、そのFrame内のテキストボックス内容を消去したいと言った感じです。 https://multimedia.okwave.jp/image/answers/12/124335/124335_original.jpg もしお分かりの方がいらっしゃいましたらご教示いただけないでしょうか?宜しくお願い致します。

  • Userform内のFrameのCaptionが印刷できないのですが

    VBAでUserFormを印刷しようとしたのですが、UserForm内のFrameのCaptionのみ印刷されません。その他Frameの枠とかUserForm内のLabelとかは印刷できるのですが、何か設定等あるのでしょうか?一応UserForm内にCommandButtonを作りクリックで印刷させようと考えているのですが、ちなみにコードは Private Sub CommandButton1_Click() Userform1.Printform End Sub としています。なにか方法があれば教えてもらえないでしょうか。よろしくお願いします。

  • 値渡しについて

    UserForm1で以下のように求めた値「R」を UserForm2に渡すにはどのようにすればよいのでしょうか。 **************************************** <UserForm1(コード)> Public R As Integer ----------------------------------- Private Sub CommandButton1_Click()    Dim N As Integer        :    N = TextBox1.Text    R= N * 2 + 3        : End Sub **************************************** <UserForm2(コード)> Private Sub CommandButton1_Click()   Dim i As Integer       :   For i = 4 To R       :   Next i       : End Sub **************************************** どなたか教えて下さい。

  • ユーザーフォームに入力したデーターが転記できない

    いつもお世話になります。 Windows7 excell2010 です。 いろんなものに勉強してここまでに作成したユーザーフォームですが、データーは入力できるのですがコマンドボタンをクリックしても各セルに反映されません。 色々と試行錯誤していますがうまくゆきません。 どこに不具合があるかわからず恐れ入りますがどなたかご指導いただけませんか。 参考にコードは参考に下記にします。 ユーザフォームのVBAは下記です コード ※Module1 Sub 売上() Do UserForm1.Show Loop End Sub Sub 入金() Do UserForm2.Show Loop End Sub ※UserForm1 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "1" .AddItem "2" .AddItem "3" End With End Sub Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm1.TextBox1.Text Cells(n, 3) = UserForm1.TextBox2.Text Cells(n, 4) = UserForm1.TextBox3.Text Cells(n, 11) = UserForm1.ComboBox1.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub ※UserForm2 Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm2.TextBox1.Text Cells(n, 3) = UserForm2.TextBox2.Text Cells(n, 4) = UserForm2.TextBox3.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub

  • EXCEL VBAのユーザーフォームのコマンドボタンでBSキーと同様の役割を持たせる方法について

    すいません、EXCEL VBAで教えていただきたいことがあります。 EXCEL VBAでユーザーフォームを作る。 フォーム内にはTextBox1とCommandButton1を設置。 TextBox1に書き込んだ文字をドラッグ →CommandButton1を押す →ドラッグした文字を消去 という機能をコマンドボタンに持たせたいのですが 可能でしょうか。 下記のコードを作ってみたのですが、やはりこれだと一文字づつしか消せません。 よろしくお願いします。 Private Sub CommandButton1_Click() Dim i As Integer With Me.TextBox1 i = .SelStart If i > 0 Then .Text = Left(.Text, i - 1) & Mid(.Text, i + 1) .SelStart = i - 1 End If End With TextBox1.SetFocus End Sub

  • ユーザーフォームVBAでCells(n, 7)が

    いつもお世話になります Windows7 excell2010 です ご指導を仰ぎたいのは参照図で言うと、 TextBox1~6 は順調に入力しますがTextBox7にすると「入力」に飛び 参照図のG13に入力されません。 VBAを勉強し始めたはかりですのでどこが悪いかわかりません。 恐れ入りますがご指導願えませんでしょうか。 下記参考にします。 Module のコードには Sub FormSample() Do UserForm1.Show Loop End Sub Sub Test() MsgBox "ボタンによるマクロの実行" End Sub UserForm1 Private Sub CommandButton1_Click() n = 1 Do n = n + 1 Loop While Cells(n, 1) <> "" Cells(n, 1) = UserForm1.TextBox1.Text Cells(n, 2) = UserForm1.TextBox2.Text Cells(n, 3) = UserForm1.TextBox3.Text Cells(n, 4) = UserForm1.TextBox4.Text Cells(n, 5) = UserForm1.TextBox5.Text Cells(n, 6) = UserForm1.TextBox6.Text Cells(n, 7) = UserForm1.TextBox7.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub

  • テキストボックスを配置したいのですが

    以下のコードですと、失敗します。 Private Sub CommandButton3_Click() Dim nu7 As MSForms.TextBox Set nu7 = UserForm1.Controls.Add("Forms.TextBox.1", "TextBox1", True) With nu7 .Left = 20 .Top = 50 End With End Sub 間違いをご指摘頂けると、助かります。 どうぞ、宜しくお願い致します。

  • 12個のCommandbuttonをスマートに

    はじめまして 2003 XP UserFormにCommandbuttonが12個あります。 Private Sub CommandButton1_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "1" Else: TextBox1.Value = TextBox1 & "1" End If End Sub Private Sub CommandButton2_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "2" Else: TextBox1.Value = TextBox1 & "2" End If End Sub Private Sub CommandButton3_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "3" Else: TextBox1.Value = TextBox1 & "3" End If End Sub Private Sub CommandButton4_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "4" Else: TextBox1.Value = TextBox1 & "4" End If End Sub Private Sub CommandButton5_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "5" Else: TextBox1.Value = TextBox1 & "5" End If End Sub Private Sub CommandButton6_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "6" Else: TextBox1.Value = TextBox1 & "6" End If End Sub Private Sub CommandButton7_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "7" Else: TextBox1.Value = TextBox1 & "7" End If End Sub Private Sub CommandButton8_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "8" Else: TextBox1.Value = TextBox1 & "8" End If End Sub Private Sub CommandButton9_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "9" Else: TextBox1.Value = TextBox1 & "9" End If End Sub Private Sub CommandButton10_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "0" Else: TextBox1.Value = TextBox1 & "0" End If End Sub Private Sub CommandButton11_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "00" Else: TextBox1.Value = TextBox1 & "00" End If End Sub Private Sub CommandButton12_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "000" Else: TextBox1.Value = TextBox1 & "000" End If End Sub  これをもっとスマートに出来ないでしょうか? 宜しくお願いします。

  • Excel2000 VBA シート名の変更

    なかなかうまくいかずに困っています。 Excel2000  OS:WindowsXp ユーザーフォーム(UserForm1)上に ・Textbox1 ・Textbox2 ・Commandbutton1 があります。 Commandbutton1をクリックすると、Textbox1とTextbox2の値をつなげた文字列を、 アクティブなワークシートの名前にしたいと思っています。 今現在の、うまく動かないコードは以下のとおりです。 Private Sub CommandButton1_Click() 'ユーザーフォーム上のCommandButton1 Dim snday As Variant 'Textbox1に入力される、『日』を取得するための変数 Dim snyoubi As Variant 'Textbox2に入力される『曜日』を取得するための変数 Dim namae As Variant 'シート名になる変数。 Dim Sh As Worksheet snday = UserForm1.TextBox1.Value snyoubi = UserForm1.TextBox2.Value namae = snday & snyoubi Sh.Name = namae End Sub これを実行すると、 実行時エラー’91’ オブジェクト変数または withブロック変数が設定されていません のエラーが出ます。 Sh.Name = namae のところを with ActiveSheet ~End with で挟んでみてもだめでした。 どなたかご教授ねがえませんか。 よろしくお願いいたします。

  • エクセルVBA「スピンボタン」について

    エクセルVBA「スピンボタン」について スピンボタンとテキストボックスを組み合わせて Private Sub SpinButton1_Change() Me.TextBox1.Value = Me.SpinButton1.Value End Sub Private Sub UserForm_Initialize() With Me.SpinButton1 .Min = 1 .Value = .Min End With Me.TextBox1.Value = Me.SpinButton1.Min End Sub というコードを書きました。 「1、2、3、・・・10、11、・・・」という数の増加を「01、02、03・・・10、11・・・」という風にしたいのですがどのようにコーディングすればよいのでしょうか?お願いします。.