Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


22365 / 76732 ←次へ | 前へ→

【59750】Re:Spreadsheetコントロールの操作について
発言  ichinose  - 09/1/7(水) 8:22 -

引用なし
パスワード
   おはようございます。


>※追加質問ですみませんが、今、UserForm1が固定の大きさ(プロパティのHeight200,Width500位)なのですが、UserForm1が表示された時、ユーザーが自由に大きさを変えられるようにすることは可能でしょうか?

>(SpreadSheetの方の兼ね合いもあるかもしれませんネ)。
これは、ありますね!!ユーザーフォームだけ大きくしても意味ないものね!!
本格的にやると大変ですねえ。

一例として、

新規ブックにて、ユーザーフォーム(UserForm1)だけを作成してください。
一例ですから、コントロールはコードで配置しますから、何も配置しないでください。


標準モジュールに

'=============================================================
Option Explicit
Sub samp()
  UserForm1.Show vbModeless
End Sub


作成したUserform1のモジュールには

'===============================================================
Option Explicit
Private s_w As Double
Private s_h As Double
Private WithEvents sp_h As MSForms.SpinButton
Private WithEvents sp_v As MSForms.SpinButton
Private spd As Spreadsheet
'=============================================================
Private Sub sp_h_SpinDown()
  Me.Width = Me.Width - 6
  spd.Width = spd.Width * Me.Width / s_w
  reset_spin
End Sub
'=============================================================
Private Sub sp_h_SpinUp()
  Me.Width = Me.Width + 6
  spd.Width = spd.Width * Me.Width / s_w
  reset_spin
End Sub
'=============================================================
Private Sub sp_v_SpinDown()
  Me.Height = Me.Height + 6
  spd.Height = spd.Height * Me.Height / s_h
  reset_spin
End Sub
'=============================================================
Private Sub sp_v_SpinUp()
  Me.Height = Me.Height - 6
  spd.Height = spd.Height * Me.Height / s_h
  reset_spin
End Sub
'=============================================================
Private Sub reset_spin()
    With sp_h
     .Width = 54
     .Height = 24
     .Left = Me.Width - .Width - 50
     .Top = Me.Height - .Height - 25
    End With
    With sp_v
     .Width = 24
     .Height = 54
     .Left = Me.Width - .Width - 12
     .Top = Me.Height - .Height - 50
    End With
End Sub
'=============================================================
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  If sp_h Is Nothing Then
    With Me
     Set sp_h = .Controls.Add("Forms.SpinButton.1", , True)
     Set sp_v = .Controls.Add("Forms.SpinButton.1", , True)
    End With
    reset_spin
  Else
    Controls.Remove sp_h.Name
    Controls.Remove sp_v.Name
    Set sp_h = Nothing
    Set sp_v = Nothing
  End If
End Sub
'=============================================================
Private Sub UserForm_Initialize()
  With Me
    .Width = 425
    .Height = 350
    s_w = .Width
    s_h = .Height
  End With
  Set spd = Controls.Add("OWC.Spreadsheet.9", , True)
  With spd
    .Left = 0
    .Top = 0
    .Width = 200
    .Height = 150
    .AutoFit = True
  End With
  Set sp_h = Nothing
  Set sp_v = Nothing
End Sub


以上です。sampを実行してみてください。

Userform1には、スプレッドシートが表示されていますよね?

ユーザーフォームのスプレッドシート以外の箇所をダブルクリックしてください。
隅にスピンボタンが表示されます。

クリックして下さい。ユーザーフォームのサイズが変更されます。
(再度、ダブルクリックすると、スピンボタンが消えます)

今回は、スプレッドシートだけですが、他にコントロールがあれば、
その制御もしなければなりません。

試してみてください。
2 hits

【59733】Spreadsheetコントロールの操作について いのっち 09/1/5(月) 11:47 質問
【59735】Re:Spreadsheetコントロールの操作について ichinose@今年初投稿 09/1/5(月) 19:32 発言
【59743】Re:Spreadsheetコントロールの操作について いのっち 09/1/6(火) 18:47 お礼
【59750】Re:Spreadsheetコントロールの操作について ichinose 09/1/7(水) 8:22 発言
【59754】Re:Spreadsheetコントロールの操作について... ichinose 09/1/7(水) 10:00 発言
【59755】Re:Spreadsheetコントロールの操作について... いのっち 09/1/7(水) 11:39 お礼
【59756】Re:Spreadsheetコントロールの操作について Yuki 09/1/7(水) 11:43 発言
【59757】Re:Spreadsheetコントロールの操作について Yuki 09/1/7(水) 11:46 発言
【59759】Re:Spreadsheetコントロールの操作について ichinose 09/1/7(水) 12:52 発言

22365 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free