AIと戦って、あなたの人生のリスク診断 >>

vbModelessで表示したフォームとセルのアクティブを制御出来ないでしょうか?

UserForm1.Show vbModeless
range("A1").select ← ここでセルをアクティブにしたい(これでは駄目でした)
              

色々試したのですが、さっぱり分かりませんのでどなたかご存知でしたらお教え下さい。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちは。


AppActivateステートメントはいかがでしょう。

AppActivate Excel.Application

UserForm1へは、開いているチェックをした上で
AppActivate UserForm1.Caption
    • good
    • 5
この回答へのお礼

pauNedさん

完璧です。理想通りの動きをです

感謝感謝です。ありがとうございました。

お礼日時:2007/06/22 16:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

QExcel ユーザーフォームをモードレスで表示後

Excel 2000を使用しています。
ユーザーフォームをモードレスで表示後すぐ、ワークシートの操作が可能なように
ワークシートをクリックしたのと同じような効果を与える、やり方ってありますか?
ユーザーフォームは、アクティブセルとその周辺のセルの値を使った計算の結果
を表示するのがメインで、できればマウスでクリックしない限り前面に出てきてほしくない
のです。

ユーザーフォームのActivateイベントルーチンに、アクティブでないセルをActivateしたり、
Selectしたりするコードを挿入してみましたが、効果ありませんでした。

Aベストアンサー

UserFormのActivateイベントに

AppActivate Application.Windows(1).Cacption
と記述します

複数のブックを開いているのでしたら Windows(1)を修正する必要があります

呼び出し側のSheetのイベントで

if UserForm1.Visible = false then
  UserForm1.Show vbModeless
End If

といった具合に非表示または未表示の場合だけ Showメソッドを実行 としてやればいいようですよ

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QエクセルVBAのフォームを最前面にする方法を教えてください。

エクセルVBAなのですが、UserForm1を最前面に表示して、
他のどのウインドウをアクティブにしても消えない状態にしたいのですが、
どのようなコードを書けばできるでしょうか。
VB.NETで表すとMe.TopMost = Trueとなると思うのですが、
エクセルVBAだとそのような書き方はないようです。

もうしわけございませんがご教示頂きたく、お願いいたします。m(__)m

Aベストアンサー

あらかじめ、フォームのプロパティの[ShowModal]をFalseにしておいて、以下のような方法ではダメでしょうか?
画面のアクティブイベントを利用するのは、個人的に嫌いなのですが。。。


Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST As Long = -1
Private Const SWP_NOSIZE As Long = &H1&
Private Const SWP_NOMOVE As Long = &H2&


Private Sub UserForm_Activate()
Call SetWindowPos(GetForegroundWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub

あらかじめ、フォームのプロパティの[ShowModal]をFalseにしておいて、以下のような方法ではダメでしょうか?
画面のアクティブイベントを利用するのは、個人的に嫌いなのですが。。。


Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOS...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

QエクセルVBA テキストボックスへのセットフォーカスについて

エクセルVBAでユーザーフォーム内に配置されたテキストボックス
への数値の入力時に、指定範囲内になければメッセージボックスで
規格外であることを警告し、その規格外が入力されたテキストボックス
を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが
どうすればよいのでしょうか?
自分で考えた構文です。
Private Sub TextBox1_AfterUpdate()
Dim A As Single

A = TextBox1.Text
If A < 1.99 Or A > 3.00 Then
MsgBox "規格外!!"
    TextBox1.Text = ""
TextBox1.SetFoucus
End If
Exit Sub

End Sub

これですと、次のテキストボックスにフォーカスが移動してしまいます。
次のテキストボックスにフォーカスを移動させずに、規格内の値が
入力されるまでフォーカスを移動させない方法を教えて下さい。
お願い致します。

エクセルVBAでユーザーフォーム内に配置されたテキストボックス
への数値の入力時に、指定範囲内になければメッセージボックスで
規格外であることを警告し、その規格外が入力されたテキストボックス
を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが
どうすればよいのでしょうか?
自分で考えた構文です。
Private Sub TextBox1_AfterUpdate()
Dim A As Single

A = TextBox1.Text
If A < 1.99 Or A...続きを読む

Aベストアンサー

こんにちは。Wendy02です。

>イベントをAfterUpdateにしましたが、Wendy02さんはExitを使っていますが、AfterUpdateではなぜ正しく動作しないのでしょうか?

イベント自体の問題よりも、イベントの機能を良くみたほうがよいですね。
_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ここで、Return(戻り値)のブーリアン値があるようなので、それを利用しただけです。

>Cancel = True
が、フォーカスの移動をキャンセルしています。

別に、Exit でなくても良いのです。例えば、

_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
のKeyCode に入った 「13(Enter)」のコードを 0 で打ち消す方法でも、可能です。

If が True の時に、
 MsgBox "規格外!!",16
 TextBox1.Text = ""
 KeyCode = 0

でも可能です。

「なぜ?」というよりも、そういうパターンがあるということです。たぶん、AfterUpDateでも、方法によってはできるとは思いますが、かなり難しくなるのではないかなって思うだけです。

こんにちは。Wendy02です。

>イベントをAfterUpdateにしましたが、Wendy02さんはExitを使っていますが、AfterUpdateではなぜ正しく動作しないのでしょうか?

イベント自体の問題よりも、イベントの機能を良くみたほうがよいですね。
_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ここで、Return(戻り値)のブーリアン値があるようなので、それを利用しただけです。

>Cancel = True
が、フォーカスの移動をキャンセルしています。

別に、Exit でなくても良いのです。例えば、

_KeyDown(By...続きを読む

QVBAでユーザーフォームを再表示させたい。

ExcelのVBAでユーザーフォームを作成し、
Initializeイベントで初期化をし、コマンドボタンを
クリックしたら処理を行うように作成しました。
ところがコマンドボタンによって処理を行った後、
再度Initializeイベントを呼びたいんです。。
(コンボボックスの表示を更新する処理を
含んでいるため)
なんとかうまい方法はないでしょうか??

Aベストアンサー

まったく、トンチンカンな答えかも知れませんが・・・
> まったく、このコンボボックスの内容が変化しないんです。

UserForm4.ComboBox1.AddItem は後へ後へと追加するばかりだと思うんです。
つまり、下の方に変化した内容がありませんか?
最初から入れ直したいのであれば、コンボボックスをクリアする必要があると思うのですが。

で、3行目にクリアするのを追加してみました。

Private Sub UserForm_Initialize()
Dim i As Integer

UserForm4.ComboBox1.Clear

Worksheets("Sheet1").Select
Range("B4").Select
For i = 4 To 200
If Range("B" & i).Value <> "" Then
UserForm4.ComboBox1.AddItem Range("B" & i).Value
End If
Next i

End Sub

Qエクセルで、任意のテキストボックス等にフォーカスを移したい

すいません、またまた質問です。

エクセルXPで、ユーザーフォーム上に
複数のテキストボックスやリストボックスを
置いて入力した値が任意のシートのセルに
入力されるというものを作っています。
(しかしながらVBAがほとんど見様見真似レベル
なのでかなり悪戦苦闘(~_~*))

そこで、ユーザーフォームにて例えばTEXTBOX1に
入力後、Enterで次のテキストボックス(又は
リストボックス)にフォーカスを移したいのですが、
その時に任意のテキストボックス等にフォーカスを
移すことは可能でしょうか。

番号順(なのかな?)に自動でフォーカスを
移動させることはできたのですが、任意の対象へ
移動させるやり方とかってあるのでしょうか。

例えばTEXTBOX1からRISTBOX5へ移すとか。

入力する順番に移動できたらユーザーフォーム上での
入力作業が非常に楽になると思って(^o^;)

どうぞよろしくお願いします。

Aベストアンサー

#2 tommy-pie83 さんのご回答で良いとおもいますが、
その作業は面倒なので、

VBE でフォームオブジェクトを表示した状態で、
[表示]-[タブオーダー]

で調整です。ちなみに、フォーカスを取得させない
コントロールなら、「TabStop」プロパティーを
False にします。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング