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
上記コードが何やってるか細かい説明は省略させていただきますが、これを足がかりにしてみてもいいと思います。
お礼
形を変えることに成功しました。 本当にありがとうございました。 これからも宜しく、ご指導ください。