• ベストアンサー

「Excel VBA」の事でお伺いします。

「Excel VBA」の事でお伺いします。 1、ExcelVBEで「ユーザフォーム」を挿入する。 2、出来る「ユーザフォーム」は「モーダルダイアログ」で「タイトルバー」付です。 3、これを「モードレスダイアログ」に変更するにはプロパテイの変更で出来るのですが。 4、「タイトルバー」の無い形に変える方法が分かりません。 5、目的はユーザによる「ユーザフーム」を移動・サイズ変更させたくないわけです。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

行(列)番号に対する特別なイベントはありませんが、 それに対してどのようなイベントを使いたいのでしょうか。 例えば、行(列)番号をクリック選択した時のイベントであれば SheetのSelectionChangeイベントで代用はできます。 下記のコードで、 行番号クリック(ドラッグして複数行) 列番号クリック(ドラッグして複数行) セル範囲選択など試してみてください。 '------------------------------------------------------  Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Columns.Count = Columns.Count Then     MsgBox Target.Address(0, 0) & " 行を選択しました"  ElseIf Target.Rows.Count = Rows.Count Then     MsgBox Target.Address(0, 0) & " 列を選択しました"  Else     MsgBox Target.Address(0, 0) & " のセル範囲を選択しました"  End If End Sub '----------------------------------------------------   何れにしろ、行(列)番号に対してどのようなイベントを使いたいのか提示した方がいいでしょう。 さすれば、いろいろな案が回答されることでしょう。 以上です。  

smiyaf
質問者

お礼

早速の指導ありがとうございます。 Worksheet_SelectionChange() 再度挑戦します。 目的 行番号をクリックした時その行に有る複数セルの情報をユーザフォームのコントロール(テキスチ、コンボ)に転記する 以前不都合の状況 (1)情報が正確に転記出来ない場合が有った。 (2)画面がスクロールする。 (3)イベントが複数回起こる様な感じがする。 等であきらめていました。

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

>今回の質問に関連するのですが、... 直接関連するとは思えません..? ExcelVBA関連と言えばまあそうなんですが。 行高の変更や挿入|削除に関するイベントはありません。 簡易的にMSForms.FrameコントロールのLayoutイベントが使えます。 http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=139591&rev=0 ここで提示されているサンプルに加え Workbook_Deactivateイベントの制御なども必要かと思います。

smiyaf
質問者

お礼

早速のご指導ありがとうございます。 今回ExcelVBAを組む事になりました、 AccessVBA、Cは少し経験が有りますがExcelVBAは初めてです。 サンプルも含め、関連事項をもう少し勉強させて下さい。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

よく参照される定番サイトですが http://homepage2.nifty.com/kmado/kvba.htm ここの 『E03M130 ユーザーフォームのタイトルバー非表示』 Tipsを参考にさせてもらうと良いでしょう。 WindowsAPI関数を使いますから全く理解できないようであれば むやみに使用されない方が良いと思います。 ただ、 >目的はユーザによる「ユーザフーム」を移動・サイズ変更させたくないわけです。 この目的だと、タイトルバーを非表示にするだけでは不足ですし、 『移動・サイズ変更』を制限するだけなら タイトルバーを非表示にしなくてもある程度は可能です。 UserForm_Layoutイベントについて調べてみてください。

smiyaf
質問者

補足

「UserForm_Layoutイベント」を教えて頂きありがとうございます。 今回はこれで行こうと思います。 「WindowsAPI関数」はC言語から使用した経験が有りますが、ExcelVBAからは経験が有りません。 今回の質問に関連するのですが、下記の事項もお願い出来ませんか。 シートに自動で表示される左端の数字の行数字の部分に関するイベントは有るのですか? (セルの部分に関するイベントは知っているのですが?)

  • hoiho1010
  • ベストアンサー率11% (13/113)
回答No.1
smiyaf
質問者

補足

「ユーザーフォームの右上の[×ボタン]を無効にするには?」 は参考になりました。 ありがとうございました。 最初から[×ボタン]を表示しない方法はあるのでしようか?

関連するQ&A

  • Excel2003のVBAで質問です。

    Excel2003のVBAで質問です。 名前や住所などの単純なデータベース(一人分で一行の)があります。 各行の一番左に、小さなユーザーフォームをそれぞれ付けます。 消したい行のユーザーフォームを押すと、その行が消える。 というマクロを作りたいと思っています。 必ずしも消したい行のセルにカーソルがあるとは限らないので、どうやって押されたユーザーフォームがある行番号を抽出したらいいのかわかりません。 説明がわかりにくくてすみません。 まだ勉強が足らないのですが、教えていただけたら助かります。 よろしくお願いします。

  • VBAで実行押すまでExcel非表示にしたい

    VBAでユーザフォームを作成しました。 Excelを立ち上げるとExcelシートの前にユーザフォームが出る状態なのですが、 ユーザフォームの実行ボタンを押すまでは非表示にしたいのですが、どのような記述をしたらよいでしょうか? マクロ的に実行ボタンを押すと結果が、Excel上に反映されるので、実行ボタンを押すまで非表示であれば大丈夫です どうか教えてください。

  • 【VBA】 VBAを使ってExcelにSendMessageしてメニューを実行したい

    エクセルにおいて、VBAを使ってExcelに対してSendMessageをおこないメニューを実行したいのですが、メニューのSendMessageの引数WPARAMとLPARAMに 何を渡せば良いのでしょうか?SPY++を使ってメニューを実行したときにExcelに送られるWM_COMMANDを監視していましたがWM_COMMANDが見つかりませんでした。 ご存知の方、ご教授お願いします。 ちなみに、オートシェイプ選択時に「書式」-「オートシェイプ」メニューを実行し、書式設定ダイアログが表示され、オートシェイプの書式設定を変更するのが目的です。(VBAを使って書式設定のダイアログを表示する必要あり) SendKeysステートメントを使ってやってみましたがダメでした。この場合、モードレスダイアログに書式設定するコマンドボタンを配置し、そのボタンをクリックしたときにSendKeysを実行するもので、モードレスダイアログを表示している間はキーがモードレスダイアログに送られると判断してSendKeysの使用はやめました。

  • Excel-VBAでタイマー処理

    お世話になります。 Excel-VBAでユーザフォームを操作したいのですが、VBの場合ツールボックスにタイマーコントロールがありますが、Excel-VBAの場合ツールボックスにタイマーコントロールがありません。 タイマー処理はどうしたら良いのでしょうか?

  • VBAダイアログをキャンセルしてもフォーム表示

    エクセルのVBAについて質問です。 ユーザーフォームから保存ダイアログを開いた時に一旦ユーザーフォームに戻りたい場合、 保存ダイアログ上でキャンセル押してもユーザーフォーム上で引き続き操作できるようにするには どのようなコードを書けばいいでしょうか。

  • モードレスダイアログを閉じた時の判断(API)

    モードレスダイアログを閉じた時の判断(API) モードレスダイアログを閉じた時の判断の仕方を教えてください。 お願いします。 コードの例文を載せて頂けると幸いです。 <<詳細>> 具体的にはExcel2003の「検索と置換」ダイアログを使います (Class:bosa_sdm_XL9 Caption:検索と置換) 下記の動作をVBAで組む為です。 シートの保護解除  ↓ 「検索と置換」ダイアログ起動  ↓  ユーザーがダイアログ閉じる※この判断  ↓ シート保護

  • エクセル VBAについて

    お世話になります エクセルでのVBAのFoamにて編集画面を作成中ですが 画像の挿入(ダイアログボックス)一つ一つの貼り付けは可能ですが複数の画像の貼り付けができません。 それと貼り付けた画像たとえば4枚あるとすると 一枚一枚決まった枠内に自動に大きさなどを変更して貼り付けをしたいのですがいい方法ないですか?

  • Excel2003でVBAを勉強しています。

    Excel2003でVBAを勉強しています。 そこで、お聞きしたい事があります。 ボタン(でいいでしょうか?)を作成するには、3つの方法があるかと認識しています。 ?コントロールツールボックスのコマンドボタン機能を使用する方法 ?フォームのボタン機能を使用する方法 ?オートシェイプにマクロ機能を登録する方法 それぞれ、の違いというか特徴が良く判りません。 特に、?と?の違いは何なのでしょうか? ?のフォームを検索してもユーザーフォームしかヒットせず、違いが分かりません。 よろしければ、ご回答お願いします。

  • EXCEL2000VBAのアプリケーションエラーについて

    EXCEL2000VBAにてユーザーフォームを使ったマクロを作ったのですが、マクロを実行しユーザーフォームからエクセルのシートにデーターを移行する際に、アプリケーションエラーというエラーがでます。 他のイベントプロシージャの動作ではこのエラーは発生しません。 EXCEL2003でも発生しました。 はっきり分かりませんが、必ずアプリケーションエラーが生じるのではなく、1,2度保存や終了を繰り返した後に発生するようです。 アプリケーションエラーどういった場合に発生するのでしょうか? また、なぜこのようなことが発生するのでしょうか? 初心者ですのでよろしくお願いいたします。

  • Excel2008のVBAで

    初めまして。 Excel2008のVBAで以下のことが実現可能でしょうか? 要件:エクセルのシート上で画像を自由に配置させる。 用途:部屋のレイアウトを考えるときに椅子や机を予め画像に取っておき、それを自由に配置して大まかなレイアウトを考えるための物 現状:VBAにてコンボボックス(机や椅子の備品一覧)から備品を選択して該当する画像をシートに張り付ける所まではなんとかなりました。 問題点: シート上に配置した備品の画像をマウスでクリックしたときに備品の諸元をシート上あるエリアに表示する事可能でしょうか? 例えば椅子の画像をクリックしたときに椅子のメーカーやサイズをシート上(フォームでも可)に表示したいと言う事です。 配置した画像のプロパティを見てもイベント処理が無いみたいで、右ボタンのマクロを登録すると画像をクリックすると常にマクロが実行される ので画像のサイズや表示位置を変更することができなくなります。 また、仮にマクロを画像毎に登録するとなると配置する画像の数が不定なので予めマクロをコーディングしておくことが不可能? 等が考えられ、果たしてExcel2008VBAで実現出来るのかと思い、何かヒントでもいただければと思い投稿させて頂きます。

専門家に質問してみよう