- ベストアンサー
エクセルでフォームを自在に作る方法
初めまして。 エクセル初心者です。 データベースとして住所録を入力していますが、 フォームは立ち上げることができるのですが、 これから先、このホォームをじざいに形を変えて 入力しやすいように編集する方法がわかりません。誰か、知っている方、教えてください。 また参考文献等、教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Wizard_Zeroと申します。 「じざいに形を変えて」というのは「フォームのサイズを変える」ということでよろしいでしょうか? Excelのユーザーフォームは、デフォルトでフォームサイズが固定されています。これをサイズ変更可能なフォームに変更するプロパティはありません。(2000でしか確認してませんが) 打開策としては、[小型化]などのボタンを作って、ボタンを押したら、Width、Heightの値を変えてフォームを小さくする、という手があります。 サイズを小さくしたら、テキストボックスなどを再配置(Left,Top,Width,Height各プロパティ/Moveメソッド)してください。 # Excel初心者=VB初心者とは限らないので、一応実現方法を...。 API関数を使えば、いささか強引ですがリサイズ可能なフォームに変えることが出来ます。とりあえず、ユーザーフォームに次のコードをコピって実行してみてください。 'API関数 Private Declare Function DrawMenuBar Lib "user32" _ (ByVal hwnd As Long) As Long Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long 'API定数 Private Const GWL_STYLE = (-16) Private Const WS_THICKFRAME = &H40000 Dim hwnd As Long Private Sub UserForm_Activate() Dim lngStyle As Long 'フォームをサイズ変更可能にする hwnd = GetActiveWindow lngStyle = GetWindowLong(hwnd, GWL_STYLE) lngStyle = lngStyle Or WS_THICKFRAME Call SetWindowLong(hwnd, GWL_STYLE, lngStyle) 'メニューバーを再描画(×ボタンがずれるので) Call DrawMenuBar(hwnd) End Sub Private Sub UserForm_Resize() 'フォームの最小サイズを制限 If Me.Width < 150 Then Me.Width = 150 If Me.Height < 100 Then Me.Height = 100 End Sub 上記コードが何やってるか細かい説明は省略させていただきますが、これを足がかりにしてみてもいいと思います。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
>このフォームをじざいに形を変えて入力しやすいように編集する方法... EXCELメニューの[データ]-[フォーム]で表示されるフォームのことでしょうか? でしたら、列を入れ替えることで、入力する順番を変えるぐらいのことしか、できません。 例えば、「入力するテキストボックスの幅を変えたい」などをお考えでしたら、VBAでユーザーフォームを自作することになります。 はずしていたら、すみません。
お礼
形を変えることに成功しました。 本当にありがとうございました。 これからも宜しく、ご指導ください。