プログラミングのメモ

プログラミングの学び直し備忘録

VBA:Excel :Tips:正規表現

BCD
..(BD|EF).......
7TRGPTNRES
8ABCDEFGHIJK..(CD|EF).......1
9ABCDEFGHIJK..(CD|EF).......1
Sub Sample()

    Dim arr(0 To 20000) As Long
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)
    
    Dim i As Long
    Dim sTrg As String
    Dim sPtn As String
    For i = LBound(arr) To UBound(arr)
        DoEvents
        sTrg = ws.Cells(7 + i, "B").Value
        sPtn = ws.Cells(7 + i, "C").Value
        arr(i) = myFncRegExp(sTrg, sPtn)
        'Debug.Print i
        
    Next i
    
    ws.Range(Cells(7, "D"), Cells(7 + UBound(arr), "D")) = WorksheetFunction.Transpose(arr)

End Sub
Public Function myFncRegExp( _
                            ByVal argTrg As String, _
                            ByVal argPtn As String _
                            ) As Integer
                            
    If argTrg = "" Then
        myFncRegExp = -1
        Exit Function
    End If
                            
    Dim bRes As Boolean
    Dim RE, strPattern As String
    Set RE = CreateObject("VBScript.RegExp")
    With RE
        .Pattern = argPtn       ''検索パターンを設定
        .IgnoreCase = True          ''大文字と小文字を区別しない
        .Global = True              ''文字列全体を検索
        bRes = .Test(argTrg)
    End With
    
    myFncRegExp = IIf(bRes, 1, 0)
    

End Function

全般

単語

絶対、相対absolute / relativeabs/rel
追加、削除add / removeadd/rev
開始、停止start / stop
始める、終わるbegin / end
初め、終わりfirst / last
最小、最大min / max
先頭、末尾top / last
先頭・末尾head / tail
ヘッダー、フッターheader / footer
頂上、底辺top / bottom
上へ、下へupper case / lower case
大文字、小文字wide / narrow
全角、半角under / over

プログラミングでよく使う英単語のまとめ【随時更新】 - Qiita


Is
存在するかIsExist
NullかIsNull
数値かIsNumeric
日付かIsDate
念のためJICjust in case
気にしないDCdon't care

プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ
プログラミングの変数・メソッドの命名でよく使う英単語まとめ - "BOKU"のITな日常
メソッド名、迷った時に参考にできる単語一覧
コーディングの命名規則一覧 | murashun.jp

Excel:ホームタブ

GRP
クリップボードコピー[Ctrl]+[C]
貼り付け[Ctrl]+[V]
切り取り[Ctrl]+[X]
書式のコピー/貼り付け
フォント
配置
数値
スタイル
セル挿入(セル)[Sht]+[Ctrl]+[+]
[Alt]+[I],[E]Insert E
挿入(行):[Sht]+[Spc][Alt]+[I],[R]Insert Rows
[Ctrl]+[+](+[Sht])※[+]Keyのため[Sht]
挿入(列):[Ctrl]+[Spc][Alt]+[I],[C]Insert Coluns
[Ctrl]+[+](+[Sht])※[+]Keyのため[Sht]
挿入(シート)[Alt]+[Sht]+[F1]
[Alt]+[I],[W]Insert Worksheet
[Sht]+[F11]
セル削除(セル)[Ctrl]+[-]
[Alt]+[E],[D]Edit Del
削除(行):[Sht]+[Spc][Alt]+[E],[D]Edit Del
[Ctrl]+[-]
削除(列):[Ctrl]+[Spc][Alt]+[E],[D]Edit Del
[Ctrl]+[-]
削除(シート)[Alt]+[E],[L]Edit L
編集
分析

VBA:Excel :Tips:範囲(Range)の重複削除、結果取得・出力(Excelシート)

  • 配列の配列
  • 配列の配列 → 2次元配列
  • 配列をセルに出力
  • Excelシート 重複削除
  • セルの値を2次元配列に取得
  • 2次元配列をセルに出力
'VBAで二次元配列のデータを高速にセルへ貼り付ける | Excel作業をVBAで効率化 : https://vbabeginner.net/paste-2d-array-data-into-cells-at-high-speed/
'
Public Sub Sample()

    '=====================================
    '   配列の配列
    '=====================================
    Dim vArrOfArr
    vArrOfArr = Array( _
                        Array("a", "b", "c", "d"), _
                        Array(1, 2, 3, 4), _
                        Array(1, 2, 3, 4), _
                        Array(1, 3, 3, 4), _
                        Array(1, 2, 3, 4), _
                        Array(1, 4, 3, 4), _
                        Array(1, 2, 3, 4) _
                        )

    '=====================================
    '   2次元配列
    '=====================================
    Dim v2dArr()
    Dim r As Long, c As Long
    
    ReDim v2dArr(UBound(vArrOfArr), UBound(vArrOfArr(0)))
    
    For r = LBound(vArrOfArr) To UBound(vArrOfArr)  '// 1段目配列(行)
        For c = LBound(vArrOfArr(r)) To UBound(vArrOfArr(r))    '// 2段目配列(列)
            v2dArr(r, c) = vArrOfArr(r)(c)
        Next
    Next
    
    '=====================================
    '   セルに出力
    '=====================================
    Dim iRowMax As Long, iColMax As Long
    iRowMax = UBound(v2dArr, 1) - LBound(v2dArr, 1) + 1 '// 1次元目の要素数を取得
    iColMax = UBound(v2dArr, 2) - LBound(v2dArr, 2) + 1 '// 2次元目の要素数を取得

    Cells.Clear
    
    '// Rangeオブジェクトで貼り付けるセル範囲を指定する場合
    Dim cellStart   As Range: Set cellStart = Cells(2, 2)
    Dim cellEnd     As Range: Set cellEnd = cellStart.Offset(iRowMax - 1, iColMax - 1)
    
    Range(cellStart, cellEnd).Value = v2dArr: Cells.Clear
    
    '// Rangeオブジェクトで開始セルから貼り付けるセル範囲を拡張する場合
    Range("B2").Resize(iRowMax, iColMax).Value = v2dArr: 'Cells.Clear
    
    
    '=====================================
    ' Excelシート 重複削除
    '   対象列 Columns:=Array(1, 2)
    '=====================================
    Dim rng As Range
    Set rng = Range("B2").CurrentRegion
    
    rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
    
    '=====================================
    '// セルの値を2次元配列に取得
    '=====================================
    Dim vGetArrCell As Variant
    vGetArrCell = rng.CurrentRegion.Value    '※indexは「1」から
    
    '=====================================
    '   セルに出力
    '=====================================
    iRowMax = UBound(vGetArrCell, 1) - LBound(vGetArrCell, 1) + 1 '// 1次元目の要素数を取得
    iColMax = UBound(vGetArrCell, 2) - LBound(vGetArrCell, 2) + 1 '// 2次元目の要素数を取得

    '// Rangeオブジェクトで開始セルから貼り付けるセル範囲を拡張する場合
    Range("B12").Resize(iRowMax, iColMax).Value = vGetArrCell: 'Cells.Clear
    
    
End Sub

ExcelVBA:TOP2

基礎

ショートカット

設定項目 内容
VBE起動 [Alt]+[F11]
クイックヒント [Ctrl]+[I]
パブリックプロシージャ呼び出し [Alt]+[F8]
ジャンプ [Ctrl]+[G]

主なオブジェクト

  • ワークブック
  • ワークシート
  • セル(Range):Range
  • フォント:Fonf
  • オブジェクトの内部:Interior
  • 並び替え:
  • フィルタ:Filter

セル、行、列 選択方法

VBA:Excel :Range - プログラミングのメモ
  • 単一セルRange
  • 範囲
  • 離れた位置
  • 範囲のEdgeセル(左上、右上、左下、右下)

  • Range
  • Cells
  • Rows / Colmns
  • EntireRow / EntireColmn

Like演算子

記号 説明・使用例 結果
0以上の任意の文字列
"abcd" Like "a*"
True
? 任意の1文字
"abcd" Like "a???"
True
# 任意の1数字
"abcd" Like "a#"
False
[] []内の1文字
"abcd" Like "[xyz]"
False
[!] []内に指定した文字以外の1文字
"abcd" Like "[!xyz]"
True
[-] []内に指定した範囲の1文字"abcd
" Like "[a-c]"
True

Is演算子

rng Is Range("A1")    '' A1を参照しているか
rng Is Nothing          '' オブジェクトを参照しているか

配列

VBA:Excel :配列 - プログラミングのメモ

コレクション

VBA:Excel :コレクション - プログラミングのメモ

Dictionary

VBA:Excel :辞書 - プログラミングのメモ

Application

VBA:Excel :App - プログラミングのメモ
  • 画面更新
  • ファイルを開く [ファイル]-[開く]-[参照]
  • R1C1参照形式[ファイル]-[オプション]-[数式]-[数式の処理][R1C1参照形式]
  • 計算方法の設定[ファイル]-[オプション]-[数式]-[計算方法の設定]

ブック

VBA:Excel :ブック - プログラミングのメモ
  • ブックを開く
  • ブックを閉じる
  • ブック OPEN確認
  • ブック開く ダイアログ
  • 他のブックのプロシージャ呼び出し
  • 名前を付けて保存 (xlsm --> xlsx)
  • リファレンス

シート

Range

VBA:Excel :Range - プログラミングのメモ
  • Range設定
  • 範囲取得
  • 最終行/列
  • 開始行/列
  • セル(行頭先頭/行頭最後/行末先頭/行末最後

FSO

VBA:Excel :FSO - プログラミングのメモ

操作VBA

【ホーム】メニュー

Excel:ホームタブ - プログラミングのメモ
Excel用語集(リボン「ホーム」タブ編) | Excelを制する者は人生を制す
GRP
編集重複の削除検査と選択条件を選択してジャンプオブジェクトWS.DrawingObjects
数式:数値RNG.SpecialCells(xlCellTypeFormulas, 1).Select
数式:文字="a" & "B"RNG.SpecialCells(xlCellTypeFormulas, 2).Select
数式:論理値=ISNUMBER(E14)RNG.SpecialCells(xlCellTypeFormulas, 4).Select
数式:エラー値式結果 #REF!RNG.SpecialCells(xlCellTypeFormulas, 16).Select
数式:すべてRNG.SpecialCells(xlCellTypeFormulas, 23).Select

ジャンプの選択オプション(SpecialCells)|VBA入門

【挿入】メニュー

Excel用語集(リボン「挿入」タブ編) | Excelを制する者は人生を制す

【ファイル】メニュー

VBA:Excel :App - プログラミングのメモ
【ファイル】メニュー
開く 参照
オプション 数式数式の処理R1C1参照形式
オプション 数式計算方法の設定

【データ】メニュー

GRP
データツール重複の削除rng.RemoveDuplicates

重複削除

メニュー[データ]-データツールGRP[重複削除]

その他

シートの全てのオートシェイプ、ピクチャなどの描画レイヤのオブジェクト名を取得する

ワークシートに挿入した図形や画像を一括削除
シートの全てのオートシェイプ、ピクチャなどの描画レイヤのオブジェクト名を取得する

検索

VBA:Excel :検索(アドレス) - プログラミングのメモ
  • 『シート全体』指定文字列のアドレス検索
  • 『指定範囲(Range)』指定文字列のアドレス検索
  • 『指定行』指定文字列のアドレス検索
  • 『指定行(1行)』指定文字列のアドレス検索
  • 『指定列』指定文字列のアドレス検索
  • 『指定列(1列)』指定文字列のアドレス検索
  • 文字列を検索して、指定アドレスを返す。(Collection)

VBA:Excel :検索(行番号) - プログラミングのメモ

  • 指定文字列の行番号取得
    • 『シート全体』指定文字列の行番号取得
    • 『範囲指定(Range)』指定文字列の行番号取得
    • 『指定行範囲』指定文字列の行番号取得
  • 重複削除

VBA:Excel :検索(重複/重複でない セルをRangeで取得) - プログラミングのメモ

オブジェクトの選択1つ選択して[Ctrl][A]rng.Shapesコレクション

Access連携

01

VBA:Excel :ACCESS DB - プログラミングのメモ
  • データベースを作成する(ADOX)
  • テーブルの作成・削除/フィールドの作成・削除(ADOX)

02

VBA:Excel :ADO:Access - プログラミングのメモ
  • DB Class化
    • プロパティ
    • DB作成
    • TB作成
    • TB削除
    • TB存在確認
    • INSERT
    • Collection(Collection((Array))
    • JOIN(FULL)
  • 接続文字列
  • DB接続
  • 選択
    • 『SELECT』ByRef collect(FLD_NAME, Value)
    • 『SELECT』テーブルの全データをシートに出力
    • 『SELECT』フィールド指定:データをシートに出力
    • 『WHERE』条件データをシートに出力
    • 『LIKE』パタンマッチデータをシートに出力
    • SELECT * FROM TB

Tips

配列:範囲(Range)の重複削除、結果取得・出力(Excelシート)

VBA:Excel :Tips:範囲(Range)の重複削除、結果取得・出力(Excelシート) - プログラミングのメモ
  • 配列の配列
  • 配列の配列 → 2次元配列
  • 配列をセルに出力
  • Excelシート 重複削除
  • セルの値を2次元配列に取得
  • 2次元配列をセルに出力

正規表現

VBA:Excel :Tips:正規表現 - プログラミングのメモ

参考

  • Excelマクロ&VBA[実践ビジネス入門講座]