MW211 EXIT

devlog
ExcelVBA/セル範囲の入力(ユーザフォーム編)
2017年12月28日
ユーザフォームでセル範囲を入力させるには
「RefEdit」というコントロール(オブジェクト)を使う。
これはフォームのツールボックスに既定で存在する。

以下のようなイベント関数ができる。(「RefEdit1」の部分はオブジェクト名に依存)
┌──────────────────────────────────────┐
│Private Sub RefEdit1_BeforeDragOver(Cancel As Boolean,                      │
│                                    ByVal Data As MSForms.DataObject,       │
│                                    ByVal x As stdole.OLE_XPOS_CONTAINER,   │
│                                    ByVal y As stdole.OLE_YPOS_CONTAINER,   │
│                                    ByVal DragState As MSForms.fmDragState, │
│                                    Effect As MSForms.fmDropEffect,         │
│                                    ByVal Shift As Integer)                 │
│End Sub                                                                     │
└──────────────────────────────────────┘

そんでもってボタンオブジェクト(「CommandButton1」の部分はオブジェクト名に依存)で
以下のように参照してあげればよい。
┌──────────────────────────────────────┐
│Private Sub CommandButton1_Click()                                          │
│    Dim 範囲 As Range                                                       │
│    Set 範囲 = Range(RefEdit1.Value)                                        │
│    MsgBox 範囲.Rows.Count  ' 選択した(範囲の)行数はいくつ?                │
│End Sub                                                                     │
└──────────────────────────────────────┘
「RefEdit」オブジェクトの値が範囲(Range)相当となる。
分類:ExcelVBA