警告や確認メッセージを非表示にする DisplayAlertsプロパティ



Application.DisplayAlerts = False

Applicationオブジェクトのプロパティです。
警告や確認メッセージの表示、非表示をコントロールします。

既定値は True でファイル保存時の上書き保存の確認、その他、注意や警告のメッセージウインドウを表示するようになっています。
メッセージが表示されると"OK"ボタン等をクリックしなければ中断されたままになるので、止めずに処理したい場合等に記述します。
プロージャ終了時に通常はTrueに戻ります。

キーボードのキー操作 SendKeysメソッド 



Application.SendKeys(Keys, Wait)
マクロ実行中にキーボード操作をするApplicationメソッドです。
キーはアクティブなウィンドウに対して送信されます。(VBE上で実行するとVBEにキー送信されます。)
引数のKeysには文字列として、ダブルクォーテーション(")で囲って表記します。

引数のWaitは省略可能で既定値は'False'です。 'True'に指定するとキー操作の処理が終わるまでマクロの実行を中断させることが可能となり、 処理がキーの送信に追いつかなくなり誤作動を起こすことを防げます。

引数のKeysの表記方法は下記の通りです。

キー コード
ABCD(文字列) "ABCD"
Enter {ENTER} or ~(チルダ)
Tab {TAB}
BackSpace {BACKSPACE} or {BS}
Clear {CLEAR}
Break {BREAK}
CapsLock {CAPSLOCK}
End {END}
Delete {DELETE} or {DEL}
Esc {ESCAPE} or {ESC}
Home {HOME}
{UP}
{RIGHT}
{LEFT}
{DOWN}
PageDown {PGDN}
PageUp {PGUP}
F1 ~ F15 {F1} ~ {F15}
Shift +
Ctrl ^
Alt %
キー一覧



Sub SendK()
    '文字'abc'と打った後にEnter(abc + ~)
    Application.SendKeys ("abc~")

    'Enterキーを押すabc
    Application.SendKeys "{Enter}"

    'Alt + F + X(ショートカット:エクセルの終了)
    Application.SendKeys ("%fx"), True

End Sub

XlCellType列挙、XlSpecialCellsValue列挙 定数一覧



セルの状態に対して条件が合致したものを返すRange.SpecialCells メソッドでの指定できる引数のXlCellType列挙、XlSpecialCellsValue列挙の項目一覧です

名前 説明
xlCellTypeAllFormatConditions 条件付き書式が設定されているセル -4172
xlCellTypeAllValidation 入力規則が設定されているセル -4174
xlCellTypeBlanks 空白セル 4
xlCellTypeComments コメントが含まれているセル -4144
xlCellTypeConstants 定数が含まれているセル 2
xlCellTypeFormulas 数式が含まれているセル -4123
xlCellTypeLastCell 使われたセル範囲内の最後のセル 11
xlCellTypeSameFormatConditions 同じ表示形式が設定されているセル?? -4173
xlCellTypeSameValidation 同じ条件の設定が含まれているセル?? -4175
xlCellTypeVisible すべての可視セル 12
xlErrors エラーを含むセル
xlLogical 論理値を含むセル
xlNumbers 数値を含むセル
xlTextValues 文字列を含むセル

定数:数式ではない値
論理値:True or False
xlCellTypeSameFormatConditions、xlCellTypeSameValidationは使い方がよくわかりません。


関連
値の入っているセルのみを選択(xlTextValues)
空白セルを含む行(列)を削除(xlCellTypeBlanks)

値の入っているセルのみを選択(xlTextValues)



指定した範囲内で値が入っているセル(空白セル以外)を選択します。

Range.SpecialCells(xlTextValues).Select

例)使われたセル範囲内で値が入っているセルを選択
Sub Scx0()
    Cells.SpecialCells(xlTextValues).Select
End Sub

例)使われたセル範囲内で空白のセルを選択
Sub Scx0()
    Cells.SpecialCells(xlCellTypeBlanks).Select
End Sub

関連
空白セルを含む行(列)を削除(xlCellTypeBlanks)

その他、エクセルのジャンプ機能(Ctrl + G)と同様に.SpecialCellsの引数に他の定数を使用することで、特定のセルを選択することができます。
XlCellType、XlSpecialCellsValue一覧

VBA 空白行の削除




ステートメント構文など
SpecialCells(XlCellType)

任意に指定した範囲の空白行を削除して詰める方法です。
エクセル上だと「ジャンプ」→「セル選択」→「空白行」を選択と同じ動作から「行全体を削除」までを再現します。


サンプルコード
Sub kuhakusakujo()
    '例としてF列の空白セルを選択
    Columns("F").SpecialCells(xlCellTypeBlanks).Select
    '選択したセルがある行全体を削除
    Selection.EntireRow.Delete
    '選択状態の解除(一応)
    Application.CutCopyMode = False
End Sub


実行結果イメージ


解説
Columns("指定列").SpecialCells(xlCellTypeBlanks).Select
で、指定列にある空白行を選択しています。
空白以外にスペースなどがあると対象外になります。

Selection.EntireRow.Delete
は、選択しているセルがある行全体(entire)を削除しています。


関連・類似ページ
XlCellType列挙、XlSpecialCellsValue列挙 定数一覧

SpecialCellsは他にもいろいろ条件が指定できます。
上記関連ページを参照してみてください。

文字列内の文字列検索と位置取得 InStr



InStr(start, string1, string2)
InStr(検索開始位置, 検索対象文字列, 検索する文字)

~~(string2)を含む文字列の検索方法です。
検索文字がない場合は0を返すので文字の有無の判断として使用できます。
文字列[string1]から指定した文字列[string2]を検索し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返します。
開始位置[start]を整数で指定できます。

例(string1 = "ABCDE.xls" 、エクセル上に表示します)
Sub ins()
    Dim Moji As String
    Moji = "ABCDE.xls"

    '".xls"の位置を取得
    Range("a1") = InStr(Moji, ".xls")

    '".xls"以前の文字を抜き出す
    Range("a2") = Mid(Moji, 1, InStr(Moji, ".xls") - 1)
End Sub


上の例では省略可能な開始位置[start]は指定していませんので[string1]の1文字目から数えています。


例2(文字の存在有無を確認)
Sub searchIns()
    Dim ws As Worksheet
    Dim i As Long 'カウント用
    
    Set ws = ActiveSheet '対象ワークシート
        
        For i = 1 To 10  'セルA1~A10まで検索する
            '1文字目から検索して"1"が一個以上あるか検索
            If InStr(1, ws.Cells(i, 1), 1) <> 0 Then  '"1"が0個じゃない
                
                ws.Cells(i, 2) = "A" 'セルのB列にAと記入
            
            Else: End If  '"1"が0個なら何もしない
        Next i
        
End Sub

繰り返し処理(For = To...Next) ステートメント



For counter = start To end Step step

start から end までの回数だけ処理を繰り返します。
項目 説明 備考
counter カウンタに変数を指定 必須
start 初期値 必須
end 最終値 必須
step 加算される値 省略可 (既定値:1)
引数一覧

stepは負の数を指定することにより大きい値から小さい値までの繰り返し処理をすることができます。

例)A列1行目~最終行まで処理を繰り返す
Sub FtN()
    'i:counter , LR:end
    Dim i As Long, LR As Long
        'A列最終行数を取得
        LR = Cells(Rows.Count, 1).End(xlUp).Row
            '1~LRまで処理を繰り返す
            For i = 1 To LR
                Cells(i, 2) = Cells(i, 1) + 1
            Next i
End Sub


B列にA列+1の処理がされました。


例)A列で空白セルであれば行を削除する
Sub FtN2()
    'i:counter
    Dim i As Long
            '10~1行まで処理を繰り返す
            For i = 10 To 1 Step -1
                '空白なら行を削除する
                If Cells(i, 1) = Empty Then
                Cells(i, 1).EntireRow.Delete
                End If
            Next i
End Sub


上からカウントすると連続条件合致した際にスルーされてしまうので下からカウントして処理をしています。

画面の更新 ScreenUpdatingプロパティ




Application.ScreenUpdating = False

画面の更新をの有無をコントロールします。
更新をしない場合(False)は処理の実行速度が速くなります。
Falseに設定後はマクロ実行後も画面更新がしないままなので最後に
画面を更新する

Application.ScreenUpdating = True

で元に戻します。

Sub SA1()
    '画面更新を停止する
    Application.ScreenUpdating = False
    
    '画面更新する
    Application.ScreenUpdating = True
End Sub

文字列から指定した数の文字列を返す(Left, Mid, Right)関数



Left(string , length)

Right(string , length)

Mid(string , start , length)

Left・Rightはそれぞれ左右から指定する文字列[string]から、指定する文字数[length]を返します。
Mid関数の場合は開始位置[start]を整数で指定します。


例(エクセル上に表示します)
Sub LRM1()
    Dim Moji As String
    Moji = "あいうえおかきくけこ"
    
  '左から3文字抜き出す
    Range("a1") = Left(Moji, 3)
  
  '右から4文字抜き出す
    Range("a2") = Right(Moji, 4)
  
  '4文字目から3文字抜き出す
    Range("a3") = Mid(Moji, 4, 3)
  
  '5文字目からすべて抜き出す
    Range("a4") = Mid(Moji, 5)

End Sub


結果

mid関数で[length]を省略すると[start]以降の全てを抜きだします。(例の4つ目)

ListViewコントロールの使い方、イベント一覧、エラー



ユーザーフォームのListViewコントロールについて(設定方法、用語、イベント、エラー)です。

・設定(VBE)
「その他のコントロール」にある[Microsoft ListView Control]にチェックを入れます。(「その他のコントロール」はツールバー→ツール→で辿るとあります。 ツールボックスをアクティブにした状態だとクリック出来ます。もしくはツールボックス上で右クリック)

チェックを入れるとツールボックス上にListViewのアイコンが表示されるのでそれをクリックしてフォーム内に描きます。


・ListViewプロパティ一覧はこちら


・用語等
◯アイテム(item)
ListViewに表示されているレコードのValue(左端)
◯ラベル(label)
アイテムのテキスト部分
◯OLE(Object Linking and Embedding)
アプリケーション間でのデータ共有


・イベント一覧
名前 説明
AfterLabelEdit ユーザーがラベルの値を変更した後
AfterUpdate どの更新が対応するのかわかりません…
BeforeLabelEdit ユーザーがラベルの値を変更しようとした時
BeforeUpdate どの更新が対応するのかわかりません…
Click ListView内をクリックした時
アイテムがあれば ItemClick と同じ
ColumnClick ListViewの列ヘッダーをクリックした時
DblClick ListView内をダブルクリックした時
アイテムがあればアイテムダブルクリックと同じ
Enter フォーカスがListViewに移った時
Exit フォーカスがListViewから移った時
ItemCheck ListView内のチェックボックスがにチェックが入った時
※ListViewのCheckBoxesプロパティがTrueの時のみ
ItemClick ListView内のアイテムをクリックした時
KeyDown ListViewフォーカス時にキーボードの何かキーが押された時
KeyPress ListViewフォーカス時にキーボードの文字キーが押された時
KeyUp ListViewフォーカス時に既に押されたキーが離れた時
MouseDown ListView上でMouseクリックした時
MouseMove ListView上でMouseを動かした時
MouseUp ListView上でクリックしたMouseを話した時
OLECompleteDrag OLEドラッグが完了した時
※OLEDropModeプロパティ=ccOLEDropManual時
OLEDragDrop ListView内にOLEドロップがされた時
※OLEDropModeプロパティ=ccOLEDropManual時
OLEDragOver ListView内にDrag状態でカーソルが通過した時
OLEGiveFeedback ListView内ItemをDragした時(OLEDragOverの後)
OLESetData ListView外にOLEドラッグが完了した前
OLEStartDrag (OLEDrag メソッド実行時)
ListView内ItemをDragした時


・エラー
◯「実行時エラー '35602' Key is not unique in collection」


→対処方法
一度ColumnHeaders.Add で定義した上で更に別のタイミングで.ColumnHeaders.Add をしようとした場合に起きるエラーで、一旦ListViewをClearにすればエラーはおきないはずです。
◎回避例

ListView1.ColumnHeaders.Clear



◯「はこのマシンでは利用できない為、オブジェクトを読み込めませんでした。」
→多分ですが…
ListViewを作成した環境の「MSCOMCTL.OCX」のバージョンが異なる時に発生するエラーで、ListViewコントロール設定(VBAを作成した環境)した「MSCOMCTL.OCX」のバージョンより古いバージョンの環境時にListViewを読み込んだ時に発生するようです。
Windowsのアップデートをしていなかったりするとバージョンが違うようです。

→対処方法
1.ユーザーのwindows updateを行う。
2.MSCOMCTL.OCXのレジストリ再登録する。
(管理者権限でコマンドプロンプトを開いて regsvr32 C:\Windows\System32\MSCOMCTL.OCXと入力する。)
3.新しいバージョンの「MSCOMCTL.OCX」を C:\Windows\System32\ に上書きする。
(管理者権限でコマンドプロンプトを開いて regsvr32 C:\Windows\System32\MSCOMCTL.OCXが必要かもしれないです。)

1.2,3のどちらかでうまくいきました。(実績環境はxp 32bitのみです。)

△.ユーザーのPCでListViewの設定をする。(個々に出来る場合ですが、「MSCOMCTL.OCX」のバージョンが同一のPCには有効だと思います。)

×.開発する環境のMSCOMCTL.OCXを古いバージョンに変える
→ダメでした。
因みにエラーメッセージは
「システムエラーです:&H80040111(-2147221231)Class Factoryは要求されたクラスを提供できません。」
と出たあとに OK ボタンで進むと
「メモリが不足しています。」
と出ました。

VBA オートフィルタ(autofilter)の使い方



Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

Rangeの部分にはオートフィルタを適用させる範囲のリストの左上のセルを表記します。
エクセルにある機能のオートフィルタと同様です。
Excelの97-2003までは1フィールドにおける複数条件は2つまでとなっています。
Excel2007以降で2つ以上の複数条件で抽出する場合は引数Operatorに定数xlFilterValuesを指定し、Criteria1の条件を配列としてArrayを用いて指定します。

また、異なるフィールド(列)に対して条件を設定する場合は、AutoFilterメソッドを2度連続して支持すれば複数フィールドに条件が設定できます。

名前 説明 備考
Field フィルタの対象となるフィールド番号 整数 範囲内の左端の列が"1"順に2,3・・・
Criteria1 抽出条件となる文字列(1) 文字列 省略可(既定値:全て対象)
Operator フィルタの種類、抽出条件 XlAutoFilterOperator
省略可(既定値:xlAnd)
Criteria2 抽出条件となる文字列(2)
(Criteria1とOperatorが必要)
文字列 省略可
VisibleDropDown オートフィルタのドロップダウン矢印
表示有無
True or
False
省略可(表示する)
(既定値:True)
引数一覧


例)オートフィルタの条件を2つ設定して該当するレコードのみのデータを作成
Sub AFTes()
Dim ws1 As Worksheet, ws2 As Worksheet
    
   'Worksheetをセット
    Set ws1 = ActiveWorkbook.Worksheets(1)
    Set ws2 = ActiveWorkbook.Worksheets(2)
    
    'オートフィルタ
    'セルA1から始まるリストで3列目に東証1部か東証2部を表示
    'Field:=3 3列目
    'Criteria1・Criteria2は条件
    'Operator:=xlOr は Criteria1・Criteria2の論理演算子OR
    ws1.Range("A1").AutoFilter Field:=3, Criteria1:="東証1部", _
    Operator:=xlOr, Criteria2:="東証2部"
    
    
    '表示されている部分のみコピーしてSheet2に貼り付け
    ws.Range("A1").CurrentRegion.Columns("A:H").Copy _
    Destination:=ws2.Range("A1")
    
End Sub



◯エラー
抽出する条件と合致するものがない場合には
「実行時エラー '1004':
RangeクラスのAutoFilterメソッドが失敗しました。」
というエラーが出るのでない場合のエラー処理等の記述が必要になる場合もあるかと思います。



解除方法
下記はオートフィルターモードを判定してフィルタを解除する方法です。
    If ActiveSheet.AutoFilter.FilterMode = True Then
        ActiveSheet.Range("a1").AutoFilter
    End If

クリアする方法
オートフィルターの状態のまま全てのフィルタリングをクリアにする方法です。
Sub autof()
    'アクティブシートのフィルタをクリアにする
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

End Sub

新しいブックの作成 Workbooks.Addメソッド




Workbooks.Add (Excelファイル)

ワークブックの新規作成をするWorkbooks.Addメソッドです。
引数に何も指定しないとファイル形式は通常の形式(バージョンによって異なります)となり指定は出来ないです。
新規のワークブックとして使用するほか、計算場所・作業場所としての一時ファイルとして活用できるような感じです。

サンプル1 一時的に開いて保存せずに閉じる
Sub WoAd()
    Dim wb As Workbook
    Workbooks.Add

    'オブジェクト型変数なので 'Set'
    Set wb = ActiveWorkbook
        
        'なんとなくセルに文字入力
        wb.Sheets(1).Range("a1") = 1111

    'なんとなくA1セルをmsgboxに表示
        MsgBox wb.Sheets(1).Range("a1")
    
  '保存せずに閉じる
    wb.Close SaveChanges:=False
End Sub


また、引数に既存のエクセルファイルを指定するとそのファイルをテンプレートみたいな感じで新しいブックを作成します。
引数に指定できる拡張子は(.xls)、(.xlsx)、(.xlt)などエクセルの形式が対応しています。
ファイルはパスを含めて指定できます。

サンプル2 C:\aaa.xlsファイルをテンプレートとして開く
Sub ADDD()
    'パスを含めて指定する
    Workbooks.Add ("C:\aaa.xls")
End Sub

日付表示書式指定 Format関数




Format(対象,format) 年月日時間の表示形式を変更する関数です。
date関数、Now関数やTime関数と組み合わせて日付、時間の表示形式を指定します。
西暦、和暦等でも表示できます。



文字 説明 備考
/(スラッシュ) 年月日の区切り位置 -
:(コロン) 時間の区切り位置 -
年月日・時間の既定の表記 -
y 01/01から数えた日数 1~366
yy 西暦下2桁 0~99
yyyy 西暦4桁 0~9999
m 1~12
mm 01~12
mmm 月(英語表記略称3文字) -
mmmm 月(英語表記) -
d 1~31
dd 01~31
ddd 曜日(英語表記略称3文字) -
dddd 曜日(英語表記) -
h 時間 0~23
hh 時間 00~23
n 0~59
nn 00~59
s 0~59
ss 00~59
AM/PM
am/pm
AM・PM(am・pm)を表記
hと併用で0~12時間表記
00~59
ss 00~59
g 和暦年号ローマ字1文字 M、T、S、H
gg 和暦年号漢字1文字 明、大、昭、平
ggg 和暦年号漢字 明治、大正、昭和、平成
e 和暦年 1~99
ee 和暦年 01~99
q 四半期 (1月→1)
Long Date yyyy年mm月dd日 表記 -
Long Time hh:nn:ss 表記 -
Format一覧


Format関数での結果はエクセルのセル上で必ずしも表現されるわけではないようです。
違いは例を参照してください。


例)エクセルに表示(元のセルの書式は標準)
Sub YMDhms()
    'サンプル
    Range("A2") = Format(Date, "yyyy/mm/dd")
    Range("A3") = Format(Time, "hh:mm:ss")
    Range("A4") = Format(Date, "c")
    '日付
    Range("A5") = Format(Date, "y")
    Range("A6") = Format(Date, "yy")
    Range("A7") = Format(Date, "yyyy")
    Range("A8") = Format(Date, "m")
    Range("A9") = Format(Date, "mm")
    Range("A10") = Format(Date + 80, "mmm")
    Range("A11") = Format(Date, "mmmm")
    Range("A12") = Format(Date, "d")
    Range("A13") = Format(Date, "dd")
    Range("A14") = Format(Date, "ddd")
    Range("A15") = Format(Date, "dddd")
    '時間
    Range("A16") = Format(Time, "h")
    Range("A17") = Format(Time, "hh")
    Range("A18") = Format(Time, "n")
    Range("A19") = Format(Time, "nn")
    Range("A20") = Format(Time, "s")
    Range("A21") = Format(Time, "ss")
    Range("A22") = Format(Time, "AM/PM")
    Range("A23") = Format(Time, "am/pm hh:mm")
    '和暦
    Range("A24") = Format(Date, "g")
    Range("A25") = Format(Date, "gg")
    Range("A26") = Format(Date, "ggg")
    Range("A27") = Format(Date, "e")
    Range("A28") = Format(Date, "ee")
    Range("A29") = Format(Date, "q")
    'その他
    Range("A30") = Format(Date, "Long Date")
    Range("A31") = Format(Time, "Long Time")
End Sub



例)debug.printに表示
Sub YMDhms2()
    'サンプル
    Debug.Print Format(Date, "yyyy/mm/dd")
    Debug.Print Format(Time, "hh:mm:ss")
    Debug.Print Format(Date, "c")
    '日付
    Debug.Print Format(Date, "y")
    Debug.Print Format(Date, "yy")
    Debug.Print Format(Date, "yyyy")
    Debug.Print Format(Date, "m")
    Debug.Print Format(Date, "mm")
    Debug.Print Format(Date + 80, "mmm")
    Debug.Print Format(Date, "mmmm")
    Debug.Print Format(Date, "d")
    Debug.Print Format(Date, "dd")
    Debug.Print Format(Date, "ddd")
    Debug.Print Format(Date, "dddd")
    '時間
    Debug.Print Format(Time, "h")
    Debug.Print Format(Time, "hh")
    Debug.Print Format(Time, "n")
    Debug.Print Format(Time, "nn")
    Debug.Print Format(Time, "s")
    Debug.Print Format(Time, "ss")
    Debug.Print Format(Time, "AM/PM")
    Debug.Print Format(Time, "am/pm hh:mm")
    '和暦
    Debug.Print Format(Date, "g")
    Debug.Print Format(Date, "gg")
    Debug.Print Format(Date, "ggg")
    Debug.Print Format(Date, "e")
    Debug.Print Format(Date, "ee")
    Debug.Print Format(Date, "q")
    'その他
    Debug.Print Format(Date, "Long Date")
    Debug.Print Format(Time, "Long Time")
End Sub

セルの書式設定 NumberFormatLocalプロパティ



Range.NumberFormatLocal = "表示形式"

セル(Range、Cell)のプロパティです。
エクセル上での「セルの書式設定」で表示形式の分類を「ユーザー定義」の種類で指定するのと同様の処理です。
書式の設定をする方法は他にFormat関数がありますが、エクセル上で表現する場合はこのRange.NumberFormatLocalプロパティを使用するほうが思い通りに出来るとおもいます。

形式 説明 備考
% パーセント表示 "0"・"#"と使う 0.0%
@ 文字列 - @
. 小数点 "0"・"#"と使う 0.0
, 桁区切り "0"・"#"と使う #,###
: 日時 "h"・"m"・"s"と使う
1=24h
hh:mm:ss
/ 日付 "y"・"m"・"d"等と使う
1=1900/01/01
yy/mm/dd
(西暦年月日)
G/標準 標準 - G/標準
"任意指定文字" 指定文字 "" を & で結ぶ "ggge" & "年" & "mm" & "月" & "dd" & "日"
(和合年月日)
(その他) 1000円単位でマイナス赤字 - "
\
" & "#,###,;" & "
\
" & "[赤]-#,###,"
表示形式一覧

・"0"と"#"の違い
"0"は指定された桁に値がなければ"0"と表示されます。
"#"は指定された桁に値がなければ空白になります。
関連
数値表示書式指定 Format関数


Sub NFL()
    Range("a2").NumberFormatLocal = "0.0%"
    Range("a3").NumberFormatLocal = "@"
    Range("a4").NumberFormatLocal = "#,###.#"
    Range("a5").NumberFormatLocal = "0,000.0"
    Range("a6").NumberFormatLocal = "hh:mm:ss"
    Range("a7").NumberFormatLocal = "yy/mm/dd"
    Range("a8").NumberFormatLocal = "G/標準"
    Range("a9").NumberFormatLocal = "ggge" & "年" & "mm" & "月" & "dd" & "日"
    Range("a10").NumberFormatLocal = "\" & "#,###,;" & "\" & "[赤]-#,###,"
End Sub


結果

列幅を設定(ColumnWidth)と行の高さの設定(RowHeight)



Columns.ColumnWidth = 長さ
Rows.RowHeight = 長さ

長さに設定する数値は標準スタイルの 1 文字分フォントと同じサイズです。


例)A:B列を 長さ2.5 に変更する
Sub Columnwidth()
    
    Columns("A:B").Columnwidth = 2.5

End Sub


結果




◯エラー
※.Columnwidth.Width としてしまうと

「Range クラスの Width プロパティを設定できません。」

という実行時エラー '1004';が表示されてしまいます。

UserForm プロパティ一覧



ユーザーフォーム(UserForm)のプロパティ一覧です。

名前 説明 選択項目 選択内容
(オブジェクト名) フォームの名前
BackColor フォームの背景色 RGB( , , ) (赤・緑・青)の順
BorderColor 境界線の色 RGB( , , ) (赤・緑・青)の順
BorderStyle 境界線のスタイル fmBorderStyle
fmBorderStyleSingle
境界線を表示するか
しないか
Caption フォームに表示される
タイトル
String 文字列
Cycle フォームでタブが最後まで
行った時のフォーカスの循環
方法
fmCycleAllForms

FmCycleCurrentForm

次のFrame,MultiPage
に移動する
今いるFrame,MultiPage
の先頭
DrawBuffer フレームを描画する時に
表示しないピクセル数を指定
16,000~1,048,576
の整数
大きな値だとパフォーマンス低下
Enabled 使用可能かどうか True
False
Font - - -
ForeColor - - -
Height フォーム縦の長さ 単位:ポイント (フォントと同じ単位)
HelpContextID F1キーを押した時に
表示出来る独自のヘルプ
(helpFile)
整数 既定値:0
KeepScrollBarsVisible スクロール バーを常に
表示するかどうか
fmScrollBarsNone
fmScrollBarsHorizontal
fmScrollBarsVertical
fmScrollBarsBoth
非表示(既定値)
水平スクロールバー
垂直スクロール バー
両方のスクロールバー
Left フォームの画面左
からの表示位置
Single 既定値:0
(StartUpPositionが
Manualの際適用)
Mouselcon MousePointerを
fmMousePointerCustomに
指定した場合の表示
ICO アイコン
MousePointer マウスポインタの形 fmMousePointerDefault
fmMousePointerArrow
fmMousePointerCross
fmMousePointerIBeam
fmMousePointerSizeNESW
fmMousePointerSizeNS
fmMousePointerSizeNWSE
fmMousePointerSizeWE
fmMousePointerUpArrow
fmMousePointerHourglass
fmMousePointerNoDrop
fmMousePointerAppStarting
fmMousePointerHelp
fmMousePointerSizeAll
fmMousePointerCustom
標準[矢印](既定値)
矢印
十字型
Iの字
矢印[右上左下]
矢印[上下]
矢印[左上右下]
矢印[左右]
矢印[上]
砂時計
禁止マーク
標準矢印+砂時計
?マーク
矢印[十字]
Mouselconプロパティ
Picture フォームの背景画像 - -
PictureAlignment フォーム背景画像の位置 fmPictureAlignmentTopLeft
fmPictureAlignmentTopRight
fmPictureAlignmentCenter
fmPictureAlignmentBottomLeft
fmPictureAlignmentBottomRight
左上
右上
真ん中
左下
右下
PictureSizeMode フォーム背景画像の表示方法 fmPictureSizeModeClip
fmPictureSizeModeStretch
fmPictureSizeModeZoom
画像サイズのまま
フォームの形に合わせる
形を崩さずに引き伸ばす
PictureTiling フォームに背景画像を
並べるかどうか
True
False
並べる
並べない(既定値)
RightToLeft Captionの位置 True
False

左(既定値)
ScrollBars スクロール表示の有無
・場所
fmScrollBarsNone
fmScrollBarsHorizontal
fmScrollBarsVertical
fmScrollBarsBoth
非表示(既定値)
水平スクロールバー
垂直スクロール バー
両方のスクロールバー
ScrollHeight スクロールバー縦の長さ 単位:ポイント (フォントと同じ単位)
ScrollLeft - - -
ScrollTop - - -
ScrollWidth スクロールバー横の長さ 単位:ポイント (フォントと同じ単位)
ShowModal フォーム表示時の
Worksheet操作
True
False
可能(既定値)
不可能
SpecialEffect フォームの表示エフェクト fmSpecialEffectFlat
fmSpecialEffectRaised
fmSpecialEffectSunken
fmSpecialEffectEtched
fmSpecialEffectBump
平面

凹(既定値)
枠線あり
枠(立体っぽい)
StartUpPosition フォームの初期表示位置 Manual
CenterOwner
CenterScreen
Windows Default
手動
アクティブの中央
画面中央
画面左上
Tag 補足的な情報を設定 String 変数として使用可能
Top フォームの画面上
からの表示位置
Single 既定値:0
(StartUpPositionが
Manualの際適用)
WhatsThisButton タイトルバーに
?ボタン表示
True
False
表示
非表示(既定)
WhatsThisHelp ヘルプの種類 True

False

?ボタンを押して
WhatsThisHelpIDに従う
F1キーを押して
HelpContextIDに従う(既定)
Width フォームの幅 単位:ポイント (フォントと同じ単位)
Zoom フォーム内の拡大縮小率 10~400 -
プロパティ一覧

UserForm イベント一覧



ユーザーに任意で値を入れてもらったり、選択してもらったり処理を実行するタイミングを決めてもらったりすることができます。
フォームを追加するには…
1)画面の上の【挿入】→【ユーザーフォーム】
2)左側のプロジェクトから右クリック【挿入】→【ユーザーフォーム】
3)ショートカットで[Alt] + [I] + [U] 
のいずれかで追加出来ます。


プロパティ一覧 はこちらです。


名前 説明
Initialize フォームが表示される前(初期化された時)
QueryClose フォームが閉じる前
Activate フォームがアクティブになった時
Terminate フォームが閉じられた時
Click フォームがクリックされた時
DblClick フォームがダブルクリックされた時
イベント一覧


サンプル1) 右上の×ボタン禁止
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True End Sub
引数CloseMode = 0 は右上の×をクリックして閉じようとした動作を意味します。
引数Cancel はフォームを閉じないか どうかで True でキャンセル(=閉じない)します。