A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>ご教示頂いたコードは、ウィンドウのLeftプロパティを基準に決め打ちで調整しているからです。
ActiveSheet.Application.Windows(1).Left - .Width / 3
このことについて言っていらっしゃるようですが、これが、「決め打ち」のコードなのでしょうか。
「決め打ち」の用語の使い方が変だと思います。シートからというのは、シートのウィンドウのプロパティから取ります。逆に、Sheet から、ウィンドウを経ないで左位置をどうやって取るのですか。シート・オブジェクトそのものに、そんなプロパティがあったのでしょうか。
「決め打ち」というのは、プログラマ側本位の用語で、相手の環境が分からない場合に、その選択権を、プログラマに、予想的な数値などを予めまかせてしまうことです。主に、決まった選択肢がいくつかある場合に行うもので、それを、質問者さんから、こうした可変的な位置に対応しているのに、こちらに「決め打ち」と言われるようなものではないはずです。
そもそも、UserFormは、ある程度の位置に出てくるものを、細かい位置調整は、ユーザーさんが、マウスで決めているはずです。そうでなかったら、埋め込み型のActiveX コントロールなどを使えばよいと思います。
>例えば、シートの見出しを非表示にした場合、左下隅に表示されません。
もし、これが事実だとしたら、一体、どこにUserFormは行っているのか分かりませんが、こちらはそのようなことはありませんから、元のバージョンなどが違って誤動作するのかもしれません。それは、もう対応はしきれません。
もともと、ご質問には、そのようなバージョンや使用している情報やExcelの使い方などがまったくありませんが、Excel 97~2013までは、おそらくは同じ動作だとは思ってはいます。平均的な回答をしていますが、その確認をすべて取っているわけではありません。こちらは、現在、2010で対応しています。
>もしシート領域の左下隅の座標を取得できれば、
シート領域の左下隅というのは、Sheet の高さ(Height)分と左(Left)位置で決まるものですから、アプリケーションに対して、その位置はとれているはずです。もし、まったく左下隅というなら、
ActiveSheet.Application.Windows(1).Height
ActiveSheet.Application.Windows(1).Left
にすればよいです。ただし、UserFormの大きさは考慮していません。UserFormの大きさに、大雑把に、位置調整のために戻してきているのが、気に入らないのでしょうか。それとも、使用中に、シートの動きに合わせるということなのでしょうか?
シートをその都度大きさを換えたり、シート見出しのあるなしの変化などに、調整させるということは現実の使用では、最初にその旨提示していただければ、ある程度は考えました。
プログラミング用語もご存知で、ご自身でVBAの開発もされているようですから、私や、掲示板などに頼らずに、ご自身で研究開発されるのが一番です。私の理解度は、この程度しかありませんし、ご質問者さんが、何をおっしゃっているのか、さっぱり理解できなくなっています。こちらのコードそのものにも、シートからなのに、プロパティがない所から、取得しろと言われると、これ以上は手がつきません。
実際に、#1の回答ぐらいは、たぶんVBAの書籍でも載っているはずで、ほとんどの方は、そのような平均的な回答で満足していただいています。できる見通しが立てば、かなり複雑なものでも開発して差し上げられますが、このように質問で、まったく見通しがつきませんので、これで、私からの対応は終わりにさせていただきます。ご要望には至らず、申し訳ありません。
No.2
- 回答日時:
こんにちは。
#1の回答者です。
>ご教示頂いた方法で、全てのパターンに合わせて調整することもできますが
マクロは、試してみていただけたのでしょうか。どのような状態であれ、Excelのアプリケーション枠の左隅下に行くはずです。ふつう方は、それで問題ないはずです。
>'←位置を(±数字 で)調整してください。
とマクロの中で書いたのは、微調整の意味であって、手作業でその都度調整するという意味ではありません。それは、試していただいた方なら、お分かりになっているはずです。
>表示位置を常にシートの左下隅に表示されるためです。
シートを見えないほど小さい状態から、最大化まであります。
シートの左下隅というのは、何かの間違いではないでしょうか。シートの大きさは、アプリケーション枠一杯(最大化)にしていない状態では、シートの大きさは可変ですから、いろんな状態のシートの左隅下に移動します。つまり、UserFormは、アプリケーションの真ん中もあるということです。常識的には、アプリケーションの左隅下で十分だと思います。
一応直しましたが、「つらいち」にはなりません。まあまあ、シートの左隅下には収まります。これも、やはり微調整は必要ですが、この先は、ご自身で考えてみてください。
よろしくおねがいします。
'// 基本的には標準モジュールですが、シートモジュールでも可
Sub Test2()
'シートの左下隅に
With UserForm1
.StartUpPosition = 0
.Top = ActiveSheet.Application.Windows(1).Height - .Height / 2
.Left = ActiveSheet.Application.Windows(1).Left - .Width / 3
.Show 0
End With
End Sub
'//
ご回答ありがとうございます。
>表示位置を常にシートの左下隅に表示されるためです。
誤字がありました。正しくは「表示位置を常にシートの左下隅に表示させるためです」
失礼しました。
>どのような状態であれ、Excelのアプリケーション枠の左隅下に行くはずです。ふつう方は、それで問題ないはずです。
例えば、シートの見出しを非表示にした場合、左下隅に表示されません。
ご教示頂いたコードは、ウィンドウのLeftプロパティを基準に決め打ちで調整しているからです。
見出しの有無はDisplayHeadingsプロパティで確認できますが、やはり都度調整していくしかありません。
もしシート領域の左下隅の座標を取得できれば、見出しの有無やステータスバーの有無を
意識する必要がなくなるので、その方法を求めています。
No.1
- 回答日時:
こんにちは。
以下のようなことでしょうか。UserFormの座標を取る方法は、Win32APIだったと思いますが、UserFormの表示とは、直接関係がないような気がします。
'//
Sub Test1()
'左下隅に
With UserForm1
.StartUpPosition = 0
.Top = Windows.Application.Height - .Height
.Left = Windows.Application.Left '←位置を(±数字 で)調整してください。
.Show 0
End With
End Sub
ご回答ありがとうございます。
座標を取る理由は、全画面表示に切り替えるなど環境が変化しても
表示位置を常にシートの左下隅に表示されるためです。
ご教示頂いた方法で、全てのパターンに合わせて調整することもできますが
なるべく環境に依存しない作りにしたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
原付 レッツシート開け方
-
車のシートでおもらし
-
エクセルVBA 4行飛ばしで転記す...
-
Excel複数シートから日付と文字...
-
シートベルトの固定解除
-
バイクのシートを取り替えても...
-
液晶テレビの保護シートの上手...
-
Excel VBA シート名変更時、重...
-
ドライブレコーダーのSDカード...
-
水の染み込んだバイクのシート...
-
EXCEL VBA 特定シート以外の...
-
ポケットにミシンでワッペンを...
-
電車のシートって何でこんな暑...
-
マグネットシートって・・・
-
ホワイトボードに綺麗な文字を...
-
ポップコーンの捨て方
-
テントのグラウンドシートの自作
-
BIKEのシートの取り外し方を教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
電車のシートって何でこんな暑...
-
原付 レッツシート開け方
-
水の染み込んだバイクのシート...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
ポップコーンの捨て方
-
BRIDEのシート張り替えってでき...
-
車のシートでおもらし
-
リアシート無しで運転してたら...
-
ポケットにミシンでワッペンを...
-
エクセルVBA 4行飛ばしで転記す...
-
メルセデスベンツ
-
【Excel Online】Excelデータの...
-
癒着してしまったテレビの液晶...
-
【Excel Online】特定シートの...
-
フォルツァ バッテリーを外して...
-
クルマのこのシートは走りのイ...
-
アルファード 7人乗りから8人...
おすすめ情報