問題タブ [userform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
excel - ユーザーフォームコンボボックスからワークブック変数を設定する
同僚のためにマクロを作成しています。彼らは毎日ファイルを受け取り、一日の終わりに特定の情報を別のワークブックにコピーする必要があります。マクロはコピーを処理するためのものです。現在開いているブックのリストを含むコンボボックスポップアップを備えたユーザーフォームが必要です。これにより、コピー元のファイルがわかります。そこで行われた選択によって、その選択でブック変数が設定されるように設定するにはどうすればよいですか?
私がやろうとしていることは:
以下は、ユーザーフォームのコードです。
excel - Excelユーザーフォームのテキストボックスの動作
ユーザーフォームにテキストボックスがあります。フォーム上の唯一のテキストボックスです。このテキストボックスに加えて、3つのラベルと2つのボタンがあります。基本的に、ボタンの1つがクリックされた瞬間を除いて、すべてのシナリオでこのテキストボックスにフォーカスを維持したいのですが、その後、フォーカスをテキストボックスに戻したいと思います。どちらのボタンも「TakeFocusOnClick」と「TabStop」がFalseに設定されています。フォーカスをテキストボックスに設定する際に問題が発生したため、これら2つの設定を変更しました。
これらの設定を変更すると、テキストボックスのEnterキーは効果を発揮しなくなりました。テキストボックスの_AfterUpdateと_KeyPress用に作成されたイベントがありますが、発生しません。コードでわかるように、このテキストボックスにフォーカスを設定するために行をコメントアウトしました。現在、フォーカスをとることができる唯一のオブジェクトであるため、これらの線は(理論的には)必要ありません。他のオブジェクトにフォーカスを許可したとき、これらの線は効果がありませんでした(これらのSetFocus線にもかかわらず、フォーカスはボタンに切り替わりました)。
これがコードです。Enterキーがイベントをトリガーしないことを除いて、これは非常に単純です。誰もが理由を見ることができますか?ありがとう。
excel - クラス モジュールから Frame_Enter イベントを検出する方法
これは、ここで回答した質問の後続の質問です: How to detect a mouse_down on a Userform Frame while the mouse is still down
その質問に対する回答のコードを使用すると、フォーム上の任意のフレームで MouseDown、MouseUp、および MouseMove を正常に検出できます。ただし、cls で使用できる Frame_Enter または Frame_Exit イベントはないようです。クラス モジュールで Frame_Enter イベントをシミュレートする方法はありますか?
編集:これが私がやろうとしていることです。大きなフレームに結合すると、より大きな画像を構成する 8 つの画像がロードされた 8 つのフレームがあります。長方形のピースが 8 つあるジグソーを考えてみてください。通常、8 つのフレームすべてに「淡色表示」(ニュートラル フィルター オーバーレイ) バージョンの画像が保持されますが、マウスがそれらのいずれかに入ると、新しく入力されたフレームに画像の「非淡色表示」バージョンが読み込まれ、淡色表示されたちょうど終了したフレームの画像のバージョン。したがって、マウスがこれらのフレームのいずれかの上にある場合、マウスは常に暗い画像に囲まれた明るい画像の上を移動しています.
マウスが淡色表示されていないフレームの周りを移動すると、無制限の数の「ホットスポット」トリガーがロールオーバーされ、マウスが現在ホバリングしているものに関する詳細情報を含むテキスト ボックスがポップアップ表示されます。そのフレームを離れて別のフレームに移動すると、プロセスが繰り返されます。
マウスがフレーム境界を越えて次のフレームに移動するタイミングを検出することを除いて、すべてが機能しています。これは、MouseMove イベントを処理する前に検出する必要があります。
他に何も提案されていない場合、有望に見える方法を次に示し ます。
Edit2:まだ有望に見えますが、機能させることはできません。コントロールをクリックするまで、入力イベントと終了イベントを発行していないようです。これは私にとっては役に立ちません。
では、クリス、あなたの話に戻りましょう。Frame_MouseMove イベントを見て、前回とは異なる Frame がイベントを発行するのを待っています。補助的な textBox を使用して変更を通知する代わりに、静的変数を使用して currentFrame/prevFrame を追跡できないかどうか疑問に思っています。
excel - ControlSourceセルが変更されたときにExcel UserFormテキストボックスが更新されない
コントロールソース プロパティがシート 1 のセルに設定されているさまざまなテキスト ボックスを持つユーザー フォームがあります。コマンドボタンもあります。
CommandButton をクリックすると、SQL Server データベースからデータが取得され、Sheet1 に入力されます。ただし、ユーザーフォームを閉じて再度開かない限り、テキストボックスは更新されません。CommandButton Click イベントの最後の行として UserForm1.Repain を試しましたが、まだ機能していません。
excel - ユーザーフォーム クラスの初期化
Excelで作成されたユーザーフォームといくつかのボタン(実行時に番号が設定されます)があります。クリックすると、各ボタンは独自のバージョンのユーザーフォームを開きます (同じユーザーフォームですが、各ボタンには独自のユーザーフォームがあります。たとえば、button1 はユーザーフォーム 1 を開き、button2 はユーザーフォーム 2 を開きます。各ユーザーフォームは同じユーザーフォーム クラスです)。
私はどういうわけかユーザーフォームクラスを作成することを考えており、各ボタンはユーザーフォームオブジェクトをインスタンス化します。
これを達成するための適切なコード/構文が何であるかはわかりません。
vba - VBAを使用してExcelの複数ページのuseformにタブを追加する
Excelのユーザーフォームのマルチページにx個のタブを追加するためのVBAコードを見つける必要があります。Visual Basic Editorを使用すれば手動でタブを追加できますが、実行時にVBAを使用してタブを動的に追加/削除できるようにしたいです。
ありがとう
excel - ユーザーフォームを使用して2つの数値を合計し、MsgBoxに出力する方法は?
3 つのテキスト ボックスを持つユーザー フォームを作成しました。
最初のテキストボックスは最初の数値、2 番目のテキストボックスは 2 番目の数値、最後のテキストボックスは結果です。
計算という名前のボタンを作成しました。
textbox1 の次のコードがあります。
これはtextbox2の場合:
結果を表示するボタンがあります
textbox1 に 1 を入力し、textbox2 に 2 を入力すると、1+2 は 3 になりますが、MsgBox には 0 が表示されます。
excel - Excel UserForm のフェードインとフェードアウトのアニメーションを無効にする
Excel 2007 (および 2010) で VBA を使用して、ユーザー フォームを表示および非表示にするときに、標準のフェードインおよびフェードアウト アニメーションを無効にする方法はありますか。特にフェードアウトは、私が作成しようとしているユーザー インターフェイスには遅すぎます。
おそらく、user32
関数AnimateWindow
には無効にできる設定がありますが、私はそれを理解していません。
編集:これは審美的な目標です。パフォーマンスの問題はありません。OS によって処理される でのフェードアウトにはMe.Hide
1/2 秒かかります。オーバーライドして瞬時にできるかどうかを知りたいです。
excel - Excelテーブルの間違った形式をソートするために使用されたvbaユーザーフォームの日付ピッカーからの日付
datepicker から日付を渡して Excel テーブルをソートすると、どこかでフォーマットが混乱し dd/mm/yyyy
、 mm/dd/yyyy
地域の設定を確認したところ、次のように設定されていますdd/mm/yyy
私のテーブルの列はすでに dd/mm/yyyy でソートされていますが、2012 年 5 月 7 日を選択すると、2012 年 7 月 5 日に表示されます。注: 日の列が 12 未満の場合にのみ反転します。たとえば、選択した場合開始日は6月24日ですが、6月24日のままです。
どんな助けでも大歓迎です!
excel - ポップアッププロンプトに複数の変数を表示する方法は?
多くの変数の値を計算する VBA コードがあります (簡単にするために、A、B、C と名付けましょう)。
複数の vbLine を含む MsgBox よりも、もう少し専門的で複雑なプロンプトを表示する必要があります。たとえば、3 つのボックスを保持するフレームを作成し、それぞれのボックスに変数の 1 つの値を表示し、キャプションを含めます。
MsgBox は、このタスクには制限が多すぎるようです。ユーザーフォームを試してみましたが、ユーザーフォームで使用できるコントロールはすべてコンボボックス、リストボックスなどです。ユーザーフォームに単純な「ディスプレイボックス」を挿入できますか?
さらに、ユーザーが何らかの値を入力して [OK] をクリックすると、変数 A、B、C の値が再計算され、表示が更新されるポップアップ プロンプトに追加のボックスが最終的に必要になります。
どのようなツールが必要ですか? メッセージボックス?ダイアログボックス?ユーザーフォーム?等