• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Vba UserForm SetFocus)

Vba UserForm SetFocus

このQ&Aのポイント
  • ExcelのVbaでタイピング練習のソフトを作成する際、UserForm上のテキストボックス間のフォーカス移動について困っています。
  • コントロールのイベントについての理解が不足しており、タイミングや連鎖、終了に関するエラーが発生しています。
  • どなたかこれらの問題の解決策を教えていただけないでしょうか。よろしくお願いします。

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

  • ベストアンサー
回答No.3

No.1 です。ふと、10年程前に回答した時の質問者さんの言葉を思い出し、 補足説明を加えることにしました。説明というか前提の確認になります。 もし、該当しない話だと思われたら最後まで読む必要はありません。  Private Sub TextBox3_Enter() イベントの名前に"Enter"という単語が使われていることtで、 "ENTER_KEY"を連想し、転じて、このイベントは、 テキストボックスへの入力確定時に発生するものだと 思い違いをしていた方がいらっしゃいました。 もし、そう思っていたとすると、No.1に書いてあることは、 伝わる筈もありませんので、後から思えば、必要な確認を 出来ていなかったかも知れません。 テキストボックス_Enterイベントは、 テキストボックスがフォーカスを取得したタイミングを捉えます。 反対にフォーカスを他のコントロールに移譲したタイミングでは、  Private Sub TextBox3_Exit() イベントが発生し、 (意味合いとして、Enterは"入口"、Exitは"出口") "ENTER_KEY"をおしたタイミングというのは、  Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)   If KeyCode = vbKeyReturn Then    ' "ENTER_KEY" が押された場合の処理 のような捉え方を、 入力が確定したタイミングという意味に最も近いのは、  Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)  Private Sub TextBox2_AfterUpdate() あたりなのですが、これはこれで色々分岐しないといけなくて面倒なので、 _Exitを"確定"のタイミングだということにして設計することが多いです。 改めて、 「_Enterイベントはフォーカスを取得したタイミング」 ですので、  TextBox3.SetFocus ・・・(1) を実行すると、この1行の処理が完結するまで僅かな時間に 割り込むようにして、先に、  Private Sub TextBox3_Enter() が、呼び出され、このプロシージャの処理がすべて済むのを待って、 (1)の処理が完結することになります。 つまり、ご質問のケースでは、  TextBox3.SetFocus ・・・(1) を実行中(まだ処理が終っていない時に)に  TextBox2.SetFocus・・・(2) を実行してしますので、 (1)の処理が完結した時にはTextBox2にフォーカスが いくことになるので、不正終了になる、 という説明をNo.1の冒頭に掲げています。 > 各TextBoxのTabStopプロパティは「True」、「TabIndex」は番号順になっています。 という前提に合わせて、 フォーカスを取得する(移動する)タイミングや その他のイベントについて説明します。 TextBox1の編集が済んで、TabIndexに従って、 TextBox2にフォーカスが移った処から、  フォーカスを取得したので、    _Enter イベント  編集中には、    _KeyUp イベント _KeyDown イベント に続いて    _KeyPress イベント(貼付け、消去は除外)    _Change イベント の順。  TAB_KEY,ENTAER_KEY,↑_KEY,↓_KEY を押して編集を終了したら、    _KeyUp イベント _KeyDown イベント に続いて    _BeforeUpdate イベント _AfterUpdate イベント   続いてフォーカスを失うので、    TextBox2_Exit イベント   TabIndexに従って    TextBox3_Enter イベント に繋がります。  キー操作による確定を省略して、他のコントロールを直接クリックした場合は、    _BeforeUpdate イベント _AfterUpdate イベント   続いてフォーカスを失うので、    TextBox2_Exit イベント   クリックしたコントロール側で、    _Enter イベント に繋がります。 概ねこんな感じの流れ(順番)でイベントは発生しますので、 意図したタイミングを捉えられているか、確認するのもよいかも、です。 ここに書いたことは既知のこと、ということでしたら失礼しました。 もし、ご存じなかったのだとしたら、これらの前提を踏まえて、 もう一度、No.1の説明を読んでいただければ、少しは理解し易くなっているのではと。 それと、 > Private Sub TextBox3_Enter() > TextBox2.SetFocus・・・(2) > End Sub これでは、TextBox3がフォーカスを取得した瞬間に、 TextBox2にフォーカスが移る仕組みですから、 TextBox3をユーザーが編集することが出来ない、 ということになります。 編集を禁止する目的であるならば、  TextBox3.Enabled = False を設定するとか、 LabelコントロールのデザインをTextBoxに合わせて代用するとか、 等の方法を採る方が簡単なので良く使われます。 時間に追われての乱筆、すみません。 私事、今から期間未定で、オフラインになりますので、 後に何かお訊ねあってもお応えできそうにないので、重ねてすみません。

EulerKnowsNo
質問者

お礼

realbeatinさん、再度のご回答ありがとうございます。 No.1の説明を読まずに、お礼を書かせていただきます。 >>フォーカスを取得する(移動する)タイミングや >>その他のイベントについて説明します。 >>TextBox1の編集が済んで、TabIndexに従って、 ・・・ >>   _Enter イベント に繋がります。 >>概ねこんな感じの流れ(順番)でイベントは発生しますので、 詳しい説明ありがとうございます。 アドバイスを参考に、うまくいかなかった点を整理できましたので、 あらためて、OKWAVEに質問を上げたいと思っています。 重ね重ねのアドバイス本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • skp026
  • ベストアンサー率45% (1011/2238)
回答No.2

残念ですがフォーカス関連はExcelのバージョンによって 微妙に動作が変わりやすい所です。 以下では、 http://ameblo.jp/qoll/entry-11083672592.html Private Sub UserForm_Click() CommandButton.SetFocus TextBox.SetFocus End Sub という感じで対応できたようです。 (かなりキワドイやりかたです) Win32APIのSetTimerを使い、 100mSEC後などにタイマーのプロシージャで フォーカスをセットする方法も考えられます。 SetTimerのサンプルです。 http://note.phyllo.net/?eid=1106267 この例ですと、TimerProc内のタイマー処理のところで、 TextBox.SetFocusしてみることです。 ※100mSECという値はあくまでも例です。調整が必要かもしれないです。 フォーカスの制御はExcel vbaとしてだけでなく 基本的に面倒なことになりがちです。 動作を理解するために、フォーカスに関するイベントに、 一時的にデバッグ出力するコードを入れて、 フォーカスの順番などを把握すると、 制御するコツがつかめる場合があります。 デバッグ出力の例。 http://excelvba.pc-users.net/fol8/8_1.html そして、フォーム、ボタン、テキストボックスなどの、 フォーカスしたりロストしたりするイベントと、 ボタンのクリックイベントのタイミングを調べます。 設計の見直しをするという方法もありますし、 コントロールに対しフォーカスを受け付けない設定をし、 結果的に目的のコントロールをフォーカスさせる というやり方も考えられます。(うまくいくかは分かりません) 参考にならなかったらごめんなさい。

EulerKnowsNo
質問者

お礼

skp026さん、早速の回答ありがとうございます。「OKAWAVEでは質問する前に関連しそうなQ&Aを調べ、目を通しておく」というマナーを忘れていました。申し訳ございません。 関連Q&Aに目を通す前に返事を書かせてもらいます。 紹介していただいたWebページ「http://ameblo・・・」の Private Sub UserForm_Click() CommandButton.SetFocus TextBox.SetFocus End Sub は使う自信はありません。 同じWebページでの紹介「この辺の記事」を見させてもらいました。 私の環境はOS:Windows7、10 Excel:2010、2013、2016 なので今のところ関係ないようなので「イベント発生確認テスト」は試していません。 必要な状況になれば参考したいと思います。 Webページ「http://note・・・」の内容は私にはハードルが高いですが、作っているタイピングのソフトでも制限時間をタイマーで設定しているので今後、参考にさせてもらうかもしれません。 デバッグ出力については以前から利用しています。 いろいろとアドバイスをいただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

こんにちは。 ネスト構造を整理して考えたら矛盾に気が付くのでは。 Sub CommandButton1_Click()  TextBox3.SetFocus  ┃上記処理実行中  ┣ Sub TextBox3_Enter  ┣ ┣ MsgBox "In TextBox3"  ┣ ┣ TextBox2.SetFocus  ┣ End Sub  ┗上記処理確定 End Sub ↑これは処理そのものの階層構造(ネストレベル)を示すとともに、  処理を時系列順に並べたものです。 TextBox3.SetFocus の処理確定のタイミングで、 フォーカスがTextBox2にあるという結果に対して、 TextBox3.SetFocus 処理は失敗したことになります。 メソッドが失敗すれば、それはエラーになりますし、 .SetFocusメソッドは戻り値を持たない (FunctionではなくてSub)タイプのメソッドですので、 エラーは即ち実行停止につながります。 Private Sub CommandButton1_Click()   On Error Resume Next   TextBox3.SetFocus ' ・・・(1)   On Error GoTo 0 End Sub のようにすれば実行時エラーでも停止しないようにはできますが、 元々のTextBox3.SetFocus→TextBox2.SetFocus という不自然な連続フォーカス移動自体、 ネストすることが間違いです。 何故、そういったことをしたいのか説明して貰えれば、 他に方法を提案することも可能です。 どうしてもその連続フォーカス移動を実現させる必要がある、 ということでしたら、 メソッドのネスト 【メソッドの実行が終る前に他のメソッドを実行させ結果に影響を与えること】 を解いて、 非同期でそれぞれの処理を順番に実行→終了させるような手段として、 メソッドをイベント内に書くのはやめて、 別途Sub(サブルーチン)として標準モジュ-ルに記述したものを、 Application.OnTimeメソッドで呼び出すやり方が 一般的な対処です。 ' ' // 標準モジュール Private Sub SetFocusTxb3()   UserForm1.TextBox3.SetFocus   Debug.Print "SF3" End Sub Private Sub SetFocusTxb2()   UserForm1.TextBox2.SetFocus   Debug.Print "SF2" End Sub ' ' // UserForm1モジュール Private Sub CommandButton1_Click()   Debug.Print 1   Application.OnTime Now, "SetFocusTxb3"   Debug.Print 2 End Sub Private Sub TextBox3_Enter()   MsgBox "In TextBox3"   Debug.Print 3   Application.OnTime Now, "SetFocusTxb2"   Debug.Print 4 End Sub Debug.Printはトレース(デバッグ)用の記載ですが、 これによって、 すべて指示した順番に処理が完了していること それぞれのプロシージャを抜けてから次のプロシージャに進んでいること つまり、ネストが解かれていることが確認できると思います。 ただ、このやり方が本件の解決策として正しいかは疑問です。 今一度、何をやりたいのかよく整理するようにして、 処理フローの最適化を図ってみた方がいいのかも、です。 尚、気になさっている、TabStop,TabIndexに関しては、 今回の問題に影響を与えるものではありません。 ただ、それ以外の面で、CommanButtonについては、 TabStopが必要か、TakeFocusOnClickが必要か、 よく考えて決めた方がいいと思います。 以上、ご参考まで。

EulerKnowsNo
質問者

お礼

realbeatinさん、早速の回答ありがとうございます。以前何度かお世話になり、その節は大変勉強させていただきました。「OKAWAVEでは質問する前に関連しそうなQ&Aを調べ、目を通しておく」というマナーを忘れていました。申し訳ございません。関連Q&Aに目を通す前に返事を書かせてもらいます。 ネスト構造を示していただき、よく分かりました。 >元々のTextBox3.SetFocus→TextBox2.SetFocus >という不自然な連続フォーカス移動自体、 >ネストすることが間違いです。 自分の理解のための質問用に作りました。ごめんなさい。 >【メソッドの実行が終る前に他のメソッドを実行させ結果に影響を与えること】 >・・・ >Application.OnTimeメソッドで呼び出すやり方が一般的な対処です。 全く知りませんでした。勉強します。 現在作成中の英単語タイピングソフトでイベントメソッドの連鎖が本当に必要か検討したいと思います。必要なら、イベントメッソドの中で別のイベントメッソドを呼び出すときは終了と連鎖に注意しながら利用したいと思います。 解決できない場合、再度質問したいと考えています。その際にはよろしくお願いします。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UserFormのSetFocus

    環境はExcel2002です (1)TextBox1に入力された数値を,区切りにする (2)TextBox2を入力不可の状態から入力可能な状態にする (3)TextBox2をSetFocusする という単純なプロシージャなのですが SetFocusされなくて困ってます UserFormタブオーダーの順番はTextBox1,TextBox2の順になっています 考えられる原因はなんでしょうか? ご教示願います 原因が不明でも回避する方法を教えていただいても結構です なんとしてもSetFocusしたい Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Me.TextBox1.Text = Format(TextBox1.Text, "#,##0") Me.TextBox2.Enabled = True Me.TextBox2.BackColor = &H80000005 '背景色(白色) Me.TextBox2.SetFocus End Sub

  • EXCEL VBAのユーザーフォーム上のテキストボックスの入力方法について

    すいません教えていただきたいことがあります。 EXCEL VBAのユーザーフォームについて、 コマンドボタンにタグを設定して、これにキーボードと同じ機能を持たせて テキストボックス内に入力することは可能でしょうか。 例えばコマンドボタンを「あ」~「ん」まで作り、それぞれのボタンに「あ」~「ん」までのタグを設定する。 Private Sub UserForm_Initialize() CommandButton1.Tag = "あ" CommandButton2.Tag = "い" ・・・・「ん」までボタンを作成する。 次に、 Private Sub CommandButton1_Click() TextBox1.Value = TextBox1.Value & CommandButton1.Tag End Sub Private Sub CommandButton2_Click() TextBox1.Value = TextBox1.Value & CommandButton3.Tag End Sub ・・・「ん」まで作成する。 この設定では、コマンドボタンのクリックで文字の追加はできますが、ボタンを押すと常に文字が一番後ろに追加されるため、 テキストボックスをクリックしても文章の途中に文字を挿入することが出来ません。 通常のキーボードの入力と同じようにテキストボックス内でクリックした箇所からコマンドボタンで入力を開始するような設定は可能でしょうか。 よろしくお願いします。

  • Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。

    VBA初心者です。(おそらく)基本的な質問で、申し訳ありません。 ユーザーフォーム1には、テキストボックス1とコマンドボタン1が配置されているとします。 Sub TEST () Dim N Userform1.Show MsgBox N End Sub Private Sub CommandButton1_Click() Dim N N = TextBox1.Text UserForm1.Hide End Sub Sub TESTを実行した時に、ユーザーフォーム1からNの値を引き継ぐには、どうしたら良いのでしょうか?よろしくお願いします。

  • エクセルのユーザーフォームについて

    パスワード入力用のしかけです。 ワークシートに配置したコマンドボタンを押してユーザーフォームを呼び出します。 Private Sub CommandButton1_Click() UserForm1.Show End Sub ユーザーフォームにはテキストボックスとコマンドボタンを配置しております。 テキストボックスのPasswordCharには * を設定しました。 Private Sub CommandButton1_Click() If StrConv(TextBox1.Text, vbLowerCase) = "abcd" Then MsgBox "OK!" Unload Me Else TextBox1.Text = "" TextBox1.SetFocus End If End Sub これで、ABCDまたはabcdと入力され、ユーザーフォーム上のコマンドボタンをクリックすれば、ユーザーフォームは消えます。 でも、いちいちマウスでクリックするのが面倒なのでEnterキー1回でユーザーフォームを消したいのです。 今でも、一度Enterキーを押すと、ボタンにフォーカスが移動するので、さらにEnterで消えますが、二度ではなくEnterキー1回でユーザーフォームを消すにはどうすればよいのでしょうか? ユーザーフォームは使ったことがないのでわかりません。 よろしくお願いします。

  • エクセルVBAユーザーフォーム「テキストボックス」「コンボボックス」の書式設定について

    ユーザーフォームを作成して、出荷実績を投入しようとしています。 現在、ユーザーフォームを作成して、 上から以下のようにボタンが並んでいます。 (1)コンボボックス1  商品コードと商品名を選択する。 (2)テキストボックス1~7  地域ごとの出荷実績を投入する。 (3)コマンドボタン1  決定→入力 (4)コマンドボタン2  終了 そして、以下3つの問題点がありますが、どのようにVBAを記述したら良いのか、わかりません。  a.コンボボックス1に表示される商品を商品コード   (アルファベット)と商品名で改行したい。   つまり「折り返して全体を表示する」ことは出来ないでしょうか。  b.「AAAA~」は5行目・「CCCC~」は7行目 といった   ように、商品ごとに値を投入する行を変更したい。  c.テキストボックス1~6の内容の合計が自動で(入力している   最中に)テキストボックス7に表示されるようにしたい。 次のようなVBAは記述出来たのですが、上記3つの要素を加えるには どのようにしたらよいのか、教えていただけないでしょうか? ちなみに入力する順番は次のようになっています。(設定済み) M4→L4→J4→K4→H4→I4 →M5→L5→J5→K5→H5→I5 ------------------------------------------------------------- ’フォームを表示させる。 Sub formdsp() UserForm1.Show End Sub ’フォーム内容 Dim cnt As Integer Private Sub Combobox1_Change() End Sub '入力ボタン Private Sub CommandButton1_Click() With ActiveSheet .Cells(cnt, 13) = TextBox1.Text .Cells(cnt, 12) = TextBox2.Text .Cells(cnt, 10) = TextBox3.Text .Cells(cnt, 11) = TextBox4.Text .Cells(cnt, 8) = TextBox5.Text .Cells(cnt, 9) = TextBox6.Text .Cells(cnt, 15) = TextBox7.Text cnt = cnt + 1 .Cells(cnt, 13) = Activate End With UserForm1.TextBox1.Text = "" UserForm1.TextBox2.Text = "" UserForm1.TextBox3.Text = "" UserForm1.TextBox4.Text = "" UserForm1.TextBox5.Text = "" UserForm1.TextBox6.Text = "" UserForm1.TextBox7.Text = "" UserForm1.Combobox1.Text = "" UserForm1.TextBox1.SetFocus End Sub '終了ボタン Private Sub CommandButton2_Click() Unload Me End End Sub 'コンボボックス Private Sub userform_initialize() cnt = 4 With UserForm1.Combobox1 .AddItem "AAAA 11111111111" .AddItem "BBBB 22222222222" .AddItem "CCCC 333333333" .AddItem "DDDD 444444" .AddItem "EEEE 5555555555" .AddItem "FFFF 666" .AddItem "GGGG 7777777" .AddItem "HHHH 88888" .AddItem "IIIII 999999999" .AddItem "JJJJ 0000000000000" .AddItem "KKKK 1111" .AddItem "LLLL 222222" .AddItem "MMMM 3333" End With End Sub

  • Private Sub UserForm_Init

    いつもお世話になります。 Windws7 excell2010 です。 同一のシートに二つの「Private Sub UserForm_Initialize()」があるときにどう名前を変えればまたはどうすればいいかご指導願えませんか。 「Private Sub UserForm_Initialize()」が一つの時はE5のようにうまく作動してくれます。 E列に 売上の 「回収」のリスト Private Sub UserForm_Initialize() F列に 何時の 「売掛月」のリスト(1~12の数字) Private Sub UserForm_Initialize() A列に =IF(B2="","",TEXT(B2,"mm")) 参考に下記します。 ~1 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "振込" .AddItem "現金" .AddItem "小切手" End With End Sub ~2 Private Sub UserForm_Initialize() With ComboBox2 .AddItem "10" .AddItem "11" .AddItem "12" End With End Sub '**************** '設定 '**************** Private Sub CommandButton1_Click() y = 2 Do While Cells(y, 2) <> "" y = y + 1 Loop Cells(y, 2) = TextBox1.Text Cells(y, 3) = TextBox2.Text Cells(y, 4) = TextBox3.Text Cells(y, 5) = ComboBox1.Text Cells(y, 6) = ComboBox2.Text UserForm2.TextBox1.Text = "" UserForm2.TextBox2.Text = "" UserForm2.TextBox3.Text = "" UserForm2.ComboBox1.Text = "" UserForm2.ComboBox2.Text = "" UserForm2.TextBox1.SetFocus End Sub

  • エクセル vba userform について

    現在USERFORMを使用してますが、つまずいています。 たとえば、TEXTBOX1がブランクならばコマンドボタンにフォーカス?をもっていきたいのです。 IF TEXTBOX1="" THEN コマンドボタン1.SETFOCUS ELSE TEXTBOX2.SETFOCUS END IF のような形にしてますが、うまくいきません コマンドボタンを押すとシートにそれぞれ反映されるように作成はできております。 余計なタブ操作をしたくありません。 よろしくお願いします

  • エクセルVBA テキストボックス

    いつもお世話になっております。 エクセルでVBAを使いユーザーフォームのテキストボックスで 文章入力をしようと思っているのですが、少しトラブルがありましたのでお教え願います。 エクセルシートの横がa~k、縦を9~34までのシートを結合して その中にテキストボックスで入力した文章を入れるように作っています。 MultiLineとEnterKeyBehaviorをTrueにして Private Sub CommandButton1_Click() Unload Me End Sub Private Sub TextBox1_Change() Sheets("sheet1").Range("a9") = UserForm1.TextBox1 End Sub Private Sub UserForm_Initialize() TextBox1.Value = Range("a9").Value End Sub Private Sub UserForm_Activate() With Me .Left = Application.Left .Top = Application.Top .Left = .Left + 350 .Top = .Top + 80 End With End Sub という状態になっているのですが、文章を入力して16行目で改行するとシートの方で「#VALUE!」と出てきてしまうので一旦ユーザーフォームを閉じてもう一度フォームを立ち上げると 「実行時エラー’-2147352571(80020005) Valueプロパティが設定できません。種類が一致しません。」 と出てきます。 デバッグすると  Private Sub CommandButton1_Click() → UserForm1.Show  End Sub と出てきます。 なにがおかしいのでしょうか? 今回初めてVBAを作っているので初歩的な間違いかもしれませんがよろしくお願いします

  • コマンドボタンのEnterイベント後に、フォーカスを移動したい。

    コマンドボタンのEnterイベント後に、フォーカスを移動したい。 フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。 CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。 以下のようなサンプルを作成しました。 Private Sub CommandButton1_Enter() CommandButton1_Click End Sub Private Sub CommandButton1_Click() MsgBox ("OK") TextBox2.SetFocus End Sub この場合、CommandButton1_Enterのイベントが起こった場合、CommandButton1_Click()のTextBox2.SetFocusは効きません。 (正確には、CommandButton1_Enterイベントが終わった時点で無効でしょうか。) Enterイベントは、フォーカスが移動する前に発生するため、このイベントが終わった後に、そもそもの動作に戻り、フォーカス移動が発生してしまうからなのだと思っております。 要は、コマンドボタンにタブキーやエンターキーでフォーカスしても、コマンドボタンをクリックしたのと同じ処理を行い、所定の位置にフォーカスを持っていきたいのですが、どのように行えば良いか、わからない状況です。 よろしくお願いいたします。

  • Excel VBA SetFocus

    環境:Excel 2002です UserForm1での質問です Flame5にTextBox14とTextBox15があります TextBox14とTextBox15のBeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)後 Flame2にあるTextBox1にSetFocusしたいのですがエラーが発生します 実行時エラー 2147467259(800004005) 異なるFlameにSetFocusする方法があるのでしょうか? Flame5の中でTextBox14及びTextBox15のSetFocusはできます TextBox14とのTextBox15のBeforeUpdateのプロシージャです Private Sub TextBox14_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Len(Me.TextBox14.Text) <> 0 Then Dim a As Variant a = 100 - Val(Me.TextBox14.Text) Me.TextBox15.Text = a Dim i As Integer For i = 1 To 4 Me.Controls("TextBox" & i).Enabled = True Me.Controls("TextBox" & i).BackColor = &H80000005 '背景色(白色) Next i End If Me.TextBox1.SetFocus End Sub Private Sub TextBox15_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Len(Me.TextBox15.Text) <> 0 Then Dim a As Variant a = 100 - Val(Me.TextBox15.Text) Me.TextBox14.Text = a Dim i As Integer For i = 1 To 4 Me.Controls("TextBox" & i).Enabled = True Me.Controls("TextBox" & i).BackColor = &H80000005 '背景色(白色) Next i End If UserForm1.TextBox1.SetFocus End Sub ご支援願います

CPS72カマが浮いて異音
このQ&Aのポイント
  • CPS72アニュードルIIのカマが浮いて異音がするトラブルについて相談したいです。
  • はずみが重い上糸が切れる、針が折れる、天秤に糸が絡まっていた、カマがガタガタ異音、純正ボビンが浮くなどの問題が発生しています。
  • カマ周りを掃除し、糸くずやホコリは撤去済みですが、問題は解決せず、ミシンの良さを活かせていない状況です。ニット用糸や11番針では特に糸切れや絡みが発生しており、経年劣化の可能性も考えられます。縫い手の技量では解決できないため、助言をいただきたいです。
回答を見る

専門家に質問してみよう