{"text_format":"1","workbook":"xlsx","n_sheets":3,"sheets":["記入例集","操作手順","カテゴリー名"],"not_rendered":{"charts":0,"images":4,"macros":1,"external_links":0,"defined_names":1,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"記入例集","index":0,"n_rows":300,"n_cols":4,"rows_kept":300,"cut":false,"hidden":false,"merged":[[1,1,1,3]]}
[]
[null,"VBAコード集"]
[]
[]
[]
["№","カテゴリー","動作名","コード"]
[1,"セル操作","セルへ入力","Worksheets(\"シート名\").Cells(1,1).Value = \"Hello VBA!\""]
[2,"セル操作","特定のセルを含む行をコピー","Range(\"A3\").EntireRow.Delete"]
[3,"セル操作","メモ全削除","    Dim memoRng As Range\r\n    For Each memoRng In Sheet5.UsedRange '『UsedRange』はなんらかの値が入力されているセル全てを取得できます。\r\n        If TypeName(memoRng.Comment) = \"Comment\" Then 'コメントあれば\r\n            memoRng.Comment.Delete\r\n        End If\r\n    Next"]
[4,"セル操作","列指定","Range(\"A:A\").select"]
[5,"セル操作","最終行番号取得","    Dim lastRow As Long\r\n    lastRow = Worksheets(\"シート名\").Cells(Rows.Count,1).End(xlUp).Row'最終行番号取得"]
[6,"セル操作","セル範囲指定","With Worksheets(\"シート名\")\n    Dim myRng As Range\n    Set myRng = .Range(.Cells(5, 13), .Cells(Rows.Count, 13).End(xlUp))\nEnd With"]
[7,"セル操作","見出しありデータベースのデータ部分のみ選択","With Worksheets(\"シート名\")\r\n\t.Cells(1, 1).CurrentRegion.Offset(1, 0).Resize(.Cells(1, 1).CurrentRegion.Rows.Count - 1).Select\r\nEnd With"]
[8,"セル操作","セル範囲全体選択","左上角のセルを指定\r\nWorksheets(\"シート名\").Range(\"A1\").CurrentRegion.Select"]
[9,"セル操作","範囲内にあるかどうか","    'このActivecellがA5～D25内にあるかどうか。Activecellを他セルに変えれば応用可能。\r\n    If Not Intersect(ActiveCell, Range(\"A5:D25\")) Is Nothing Then 'Intersect(範囲１、範囲2）で共通する範囲を返す\r\n        MsgBox \"範囲内にあり\"\r\n    End If"]
[10,"セル操作","セル検索（完全一致）","    Dim userName As Range\r\n    Set userName = Range(\"A3:A500\").Find(what:=\"検索値\", lookat:=xlWhole)\r\n    'VBAでは見出し行があることが想定されているため、A4から検索されることとなる。※最後はA3も検索されます。\r\n    If Not userName Is Nothing Then\r\n          ○○○ (処理)\r\n    End If"]
[11,"セル操作","セル検索（部分一致）","    Dim userName As Range\r\n    Set userName = Range(\"A3:A100\").Find(what:=\"検索値\", lookat:=xlPart)\r\n    'VBAでは見出し行があることが想定されているため、A4から検索されることとなる。\r\n    If Not userName Is Nothing Then\r\n          ○○○ (処理)\r\n    End If"]
[12,"セル操作","Findメソッド設定初期化","　　'これをFindメソッドの前に記述すればエラー防止になります。\r\n    Application.FindFormat.Clear\r\n    Cells(1, 1).Find _\r\n    what:=\"\", _\r\n    LookIn:=xlValues, _\r\n    Lookat:=xlWhole, _\r\n    SearchOrder:=xlByColumns, _\r\n    MatchCase:=False, _\r\n    MatchByte:=False, _\r\n    SearchFormat:=False"]
[13,"セル操作","セルを連続で検索する","    Dim num As Range\n    If ActiveCell <> Range(\"G2\") And ActiveCell.Value <> Range(\"G2\").Value Then  'まず普通に検索\n        '次々に検索すると検索開始位置が残ってしまう場合があるのでリセットしておく。\n        Set num = Range(\"B3:B30000\").Find(what:=\"\", lookat:=xlWhole) \n        Set num = Range(\"B3:B30000\").Find(what:=Range(\"G2\").Value, lookat:=xlWhole)\n        num.Select\n    ElseIf ActiveCell.Value = Range(\"G2\").Value Then  'ここから次を検索する作業。\n        Set num = Range(\"B3:B30000\").FindNext(After:=ActiveCell)  'アクティブセルより下を検索する。\n        num.Select\n    End If"]
[14,"セル操作","セルが結合されているか","Range(A1).mergeCells'Ａ1セルが結合されていればtrueを返す"]
[15,"セル操作","セル結合の範囲を取得","Range(A1).mergeArea'Ａ1セルの結合範囲"]
[16,"セル操作","セルを結合する","Range(\"A1:C3\").merge"]
[17,"セル操作","セルを結合する（複数範囲）","Range(\"A1:C3\").merge True 'A1からC1、A2からC2、A3からC3を結合する"]
[18,"セル操作","セル結合解除","Range(\"A1”）.unmerge"]
[19,"セル操作","セル結合（『データあり』ダイアログ非表示設定）","    Application.Displayalerts=false '確認メッセージを表示させない\r\n    Range(\"A1:C3\").merge\r\n    Application.displayalerts=true '確認メッセージを表示するに戻す"]
[20,"セル操作","一番上の行からセル検索","セル範囲.find(what:=\"田中\",after:=cells(rows.count,1)) 'これはつまりafterに最下セルを代入することで、その次のセル（最上セル）から検索するための技"]
[21,"セル操作","一番下からセル検索","    Set frng = ActiveSheet.Range(\"A3:A100\").Find(what:=Sheets(\"受付簿\").Cells(行数, 列数).Value, lookat:=xlWhole, searchDirection:=xlPrevious)\r\n    'VBAでは見出し行があることが想定されているため、A4からが検索範囲となることは気を付ける。\r\n    If Not frng Is Nothing Then\r\n    ○○○ (処理)\r\n    End If"]
[22,"セル操作","置換","    Dim ufo As String\r\n    ufo = \"宇宙人\"\r\n    ufo = Replace(ufo, \"人\", \"船\") '人と船を入れ替える。\r\n    MsgBox ufo '宇宙船と表示される。"]
[23,"セル操作","複数のセル一括置換","下記のセル範囲から『支店』という文字を『』空文字へ置き換える。つまり『支店』を削除するというコード\r\nRange(Cells(4, 4), Cells(Rows.Count, 4).End(xlUp)).Replace what:=\"支店\", replacement:=\"\", lookat:=xlPart"]
[24,"セル操作","文字の右のスペースを消す","    Do Until Right(simei.Value, 1) <> \" \" '文字列の松尾に空白がなくなるまで続ける\r\n          simei.Value = Left(simei.Value, Len(simei.Value) - 1) '松尾一文字分を省く\r\n    Loop"]
[25,"セル操作","コピー＆ペースト","    ’A1～C17をコピーしてセルD1を左上角のセルとして貼付け\r\n    Range(\"A1:C17\").Copy Range(\"D1\")"]
[26,"セル操作","コピーのみ","    Range(\"A1:C17\").Copy "]
[27,"セル操作","値のみペースト","    Range(\"D1:F17\").PasteSpecial Paste:=xlPasteFormats\r\n    Application.CutCopyMode = False 'コピーとペーストの処理を行を分けて記述する場合、コピーモードをFalseにしないと点線が残る。"]
[28,"セル操作","ペースト","    Range(\"D1:F17\").PasteSpecial Paste:=xlPasteAll\r\n    Application.CutCopyMode = False 'コピーとペーストの処理を行を分けて記述する場合、コピーモードをFalseにしないと点線が残る。"]
[29,"セル操作","複数セルに入力","range(\"A1:A10\").Value = \"〇\""]
[30,"セル操作","表示形式（通貨型に変換）","range(\"A5\").numberformatlocal=\"#,##0円\" '0は値が0なら0を表示。#は0なら空白になる。"]
[31,"セル操作","値の表示変更","    'セルの表示形式自体を変えるわけではなく、コード上で値の表示を変えます。\r\n    Dim myDate As Date\r\n    myDate = Range(\"A1\").Value\r\n    Range(\"B1\").Value = Format(myDate, \"Shot Time\")'最後の指定部分は\"#,##0\"などの形式で指定することも可能。"]
[32,"セル操作","文字の位置（何番目にあるか）","InStr(検索開始位置,\"文字列\", \"文字列から探したい文字\")←これで探したい文字が何文字目にあるかわかる。"]
[33,"セル操作","文字の位置（後ろから探す）","InStrRev(\"文字列\",\"文字列から探したい文字\")　"]
[34,"セル操作","左から何文字分取得","left(文字列,数）"]
[35,"セル操作","右から何文字目まで取得","right(文字列,数)"]
[36,"セル操作","文字数取得","len(文字列)　\r\n'※注意！Ｌｅｎ関数は文字数を調べるが、もしlong型など（つまり『11』などの数字など）が入っていたら常に4を返してしまいます。\r\n'つまり、データ型の大きさを調べているということで、桁数を調べたいならかならず一度string型へ変換する必要があります。たとえばCｓｔｒ（数）など。"]
[37,"セル操作","〇文字目から〇文字分取得","Mid(文字列,3,3) '3文字目から3文字分抜き出す"]
[38,"セル操作","文字列に文字列を挿入","    Dim moji As String\r\n    moji = \"金子太郎\" 'これに『甲』を挿入して『金子甲太郎』にしたい。\r\n    moji = Left(moji, 2) & \"甲\" & Right(moji, 2) '左から２文字『金子』と『甲』と右から２文字『太郎』を結合させる。⇒『金子甲太郎』"]
[39,"セル操作","カタカナに変換","strconv(\"文字\",vbkatakana)’カタナカに変換"]
[40,"セル操作","ひらがなに変換","strconv(\"文字\",vbhiragana)’ひらがなに変換"]
[41,"セル操作","半角→全角","StrConv(文字列,vbWide) ’全角へ変換"]
[42,"セル操作","全角→半角","StrConv(文字列,vbNarrow) '半角数字に変換"]
[43,"セル操作","行追加","rows(2).insert'行２を追加する"]
[44,"セル操作","複数行追加","Rows(\"5:7\").Insert’５から7行目（つまり３行分）を挿入する"]
[45,"セル操作","行削除","rows(5).delete'5行目を削除"]
[46,"セル操作","複数行選択","Rows(\"1:3\").Select"]
[47,"セル操作","行を非表示にする","Rows(1).Hidden = True '1行目を非表示"]
[48,"セル操作","非表示行を飛ばす","    Dim lastRow As Long:LastRow = Worksheets(\"シート名\").cells(Rows.Count,1).end(xlup).row'最終行番号取得\r\n    Dim i As Long\r\n    for i = 1 to lastRow\r\n        If Rows(i).Hidden = False Then '行が表示されていた場合\r\n            msgbox i & \"行目は表示されています。\"\r\n        End If\r\n    Next i"]
[49,"セル操作","複数列選択","Colomuns(\"A:C\").select"]
[50,"セル操作","セル削除","ranve(\"A1\").Delete (xlShiftUp)"]
[51,"セル操作","特定のセルを含む行を削除","range(\"A3\").EntireRow.Delete"]
[52,"セル操作","特定のセルを含む行","range(\"A1\").EntireRow"]
[53,"セル操作","列幅調整","Worksheets(\"シート名\").Range(\"A1\").EntireColumn.ColumnWidth = 15"]
[54,"セル操作","列幅自動調整（","Worksheets(\"シート名\").Columns(\"A:B\").AutoFit"]
[55,"セル操作","値の削除","Range(\"B3：L3\").Value =\"\""]
[56,"セル操作","セルを編集状態にする","sendKeys\"{F2}\"’キーボード操作でF2を押す"]
[57,"セル操作","フィルター","     Range(\"A1\").AutoFilter field:=3, Criteria1:=\"男性\" 'A1セルを角とする表において、左から3列目を見て、『男性』でフィルターをかける\r\n\r\n　　 Range(\"A1\").AutoFilter  ’もう一度書くことで解除\r\n　　 Sheet1.AutoFilterMode = False'もしくはこの記述でも解除可\r\n　　"]
[58,"セル操作","フィルターの絞込みのみ解除","    If ActiveSheet.FilterMode = True Then\r\n        ActiveSheet.ShowAllData'一度フィルターモードかどうかチェックしないとエラーになる\r\n    End If\r\n　　"]
[59,"セル操作","セル背景色","range(\"A5\").interior.colorindex = 16   '16はグレー。Interiorは背景色,colorindexは色番号。詳しくはGoogleで『VBA　colorIndex』で検索"]
[60,"セル操作","セル文字色","range(\"A5\").font.colorindex = 6   '6は黄色"]
[61,"セル操作","五十音順に並び替え","Range(\"A6\").Sort key1:=Range(\"D6\"), order1:=xlAscending,Header:=xlYes, SortMethod:=xlPinYin 'A6を角にしてD6の列を判断対象として五十音順に並び替え"]
[62,"セル操作","並び替え（昇順）","Range(\"B5\").Sort key1:=Range(\"D5\"), order1:=xlAscending, Header:=xlYes'B5を角として、Ｄ５の行をみて並び替え昇順"]
[63,"セル操作","並び替え（降順）","Range(\"B5\").Sort key1:=Range(\"D5\"), order1:=xldescending, Header:=xlYes'B5を角として、Ｄ５の行をみて並び替え降順"]
[64,"セル操作","改ページの挿入","sheets(\"○○\").pagesetup.printarea=\"A1:B3\""]
[65,"セル操作","印刷範囲指定","    With Worksheets(\"〇〇\")\r\n         .PageSetup.PrintArea = .Range(.Cells(1, 1), .Cells(10, 13)).Address\r\n    End With"]
[66,"セル操作","改ページ解除","sheets(\"○○\").resetallpagebreaks"]
[67,"セル操作","改ページ横断","Sheets(\"〇〇\").HPagebreaks.Add Range(\"A7\")"]
[68,"セル操作","改ページ縦断","Sheets(\"〇〇\").VPagebreaks.Add Range(\"E:E\")"]
[69,"セル操作","複数のセルを選択中かどうか","    If Selection.Count <> 1 Then\r\n         MsgBox \"複数のセルが選択されています。\"\r\n    End If"]
[70,"セル操作","セル内改行","    'セル内改行の場合はセルに入力するテキストの間に『vbLf』を入力すれば可能です。\r\n    range(\"A1\").Value = \"今日も一日\" & vbLf & \"よろしくお願いします!\""]
[71,"セル操作","セル内改行を削除する","Range(\"A1\").Value = Replace(Range(\"A1\").Value,vbLf,\"\")"]
[72,"セル操作","罫線を引く","Range(\"A1:C10\").Borders.LineStyle = xlContinuous'A1セル～C10セルまでの範囲に罫線（格子）を引く"]
[73,"セル操作","重複チェック","    If Cells(ActiveCell.Row, 13).Value <> \"\" Then\r\n        Dim i As Long\r\n        For i = 1 To Range(\"A6\").End(Direction:=xlDown).Row\r\n            If WorksheetFunction.CountIf(Range(\"M1:M30000\"), Cells(i, 13)) > 1 Then\r\n                Cells(i, 14).Interior.ColorIndex = 6\r\n            End If\r\n        Next\r\n    End If"]
[74,"セル操作","重複チェック応用","    For i = 1 To Range(\"A6\").End(Direction:=xlDown).Row '一行目からID番号入力のある最後の行数分繰り返す。\r\n        If WorksheetFunction.CountIf(Range(Cells(6, 13), Cells(i, 13)), Cells(i, 13)) > 1 Then 'COUNTIF関数で重複確認\r\n            Cells(i, 14).Interior.ColorIndex = 6 '重複なら色塗り\r\n        Else:\r\n            If Cells(i, 14).Interior.ColorIndex = 6 Then '重複ないなら\r\n                Cells(i, 14).Interior.ColorIndex = 0  '色なし\r\n           End If\r\n        End If\r\n    Next i"]
[75,"セル操作","重複チェック（複数列）","    '行内の複数セルのすべてが重複している場合に削除　※Excel2007以降でしか使用できない関数 \r\n    Range(Cells(5, 3), Cells(Rows.Count, 3).End(xlUp).Offset(, 9)).RemoveDuplicates Columns:=Array(1,2,3,4,5,6,7,8,9,10), Header:=xlNo'arrayはそれぞれの列を指定"]
[76,"セル操作","重複なし抽出（ユニークな値を抽出）","Sub 重複なし抽出()\r\n    Dim myDic As Object\r\n    Dim rng As Variant, rngs As Range\r\n        Set myDic = CreateObject(\"Scripting.Dictionary\")\r\n        With Worksheets(\"シート名\")\r\n            Set rngs = .Range(.Cells(2, \"E\"), .Cells(Rows.Count, \"E\").End(xlUp))\r\n        End With\r\n        For Each rng In rngs\r\n            If Not myDic.Exists(rng.Value) Then\r\n                myDic.Add rng.Value, 1\r\n            End If\r\n        Next\r\n        Dim myKey As Variant\r\n        myKey = myDic.Keys\r\n        \r\n        MsgBox Join(myKey)\r\n        \r\n        Set myDic = Nothing\r\n\r\nEnd Sub"]
[77,"セル操作","セルの表示形式変更","  '日付列の表示形式を標準にしておく。\r\n    Range(\"B3:B50000\").NumberFormatLocal = \"@\"\r\n"]
[78,"セル操作","シリアル値を入力","例えばセルB4が1987/11/11と入力されているとする。\r\nRange(\"C3\").value=range(\"B4\").value2’この『value2』とするとシリアル値が入る。"]
[79,"セル操作","期間でフィルター","    Dim hyo As Range\r\n    Dim h As Variant\r\n    \r\n    With Sheets(\"〇〇\")\r\n\r\n        Dim taishoTsuki As Long\r\n        Dim getsumatsu As Long\r\n'        taishoTsuki = CDate(.Range(\"H1\").Value & \"/\" & .Range(\"I1\").Value & \"/\" & \"1\")\r\n        taishoTsuki = DateSerial(.Range(\"H1\").Value, Range(\"I1\").Value, 1)\r\n        getsumatsu = DateSerial(.Range(\"H1\").Value, Range(\"I1\").Value + 1, 0)\r\n        .Range(\"A2\").AutoFilter field:=6, Criteria1:=\">=\" & taishoTsuki, Operator:=xlAnd, _\r\n            Criteria2:=\"<=\" & getsumatsu\r\n\r\n        Set hyo = .Range(.Cells(3, 2), .Cells(.Rows.Count, 2).End(xlUp).Offset(, 8))\r\n        For Each h In hyo\r\n           h.Value = Replace(h.Value, \"!\", \"\")\r\n        Next\r\n       \r\n    End With"]
[80,"セル操作","フィルター（以上、以下）","    '100以上200以下でフィルター\r\n    Range(\"A2\").AutoFilter field:=6, Criteria1:=\">=100”, Operator:=xlAnd, _\r\n        Criteria2:=\"<=200\" \r\n    ’変数を使用するなら\r\n    Dim S as long, E as long\r\n    s = 100\r\n    d = 200\r\n    Range(\"A2\").AutoFilter field:=6, Criteria1:=\">=\" & S, Operator:=xlAnd, _\r\n        Criteria2:=\"<=\" & E "]
[81,"セル操作","空白セルを数える"," MsgBox Application.WorksheetFunction.CountBlank(Range(\"B:B\"))'B列で数える"]
[82,"セル操作","空白セルを取得","　　On Error Resume Next 'スペシャルセルズを使用する際は該当セルが無い場合はエラーになるためエラー無視を記述する。\r\n    '都道府県列、市町村列、番地列までで空白を数える。\r\n    Set kuhaku = Range(\"B:B\").SpecialCells(xlCellTypeBlanks)\r\n    On Error GoTo 0 'エラー無視解除"]
[83,"セル操作","連続データ入力（オートフィル）","    Range(\"A1\").Value = 1\r\n    Range(\"A1\").AutoFill Range(\"A1:A100\"), xlFillSeries"]
[84,"セル操作","パワークエリ自動更新","Private Sub Workbook_Open()\r\n    Dim con As WorkbookConnection\r\n    For Each con In ThisWorkbook.Connections\r\n        If con.Name Like \"*クエリ*\" = True Then\r\n            con.OLEDBConnection.Refresh\r\n        End If\r\n    Next\r\nEnd Sub"]
[85,"セル操作","スライサー更新","　　 'スライサー更新\r\n    Dim myCache As SlicerCache\r\n    For Each myCache In ThisWorkbook.SlicerCaches\r\n        myCache.RequireManualUpdate = False\r\n    Next"]
[86,"セル操作","条件付き書式を削除"," 　 'シート内の条件付き書式をクリア\r\n    Dim myRng As Range\r\n    Set myRng = Cells.SpecialCells(xlCellTypeAllFormatConditions)\r\n    myRng.FormatConditions.Delete"]
[87,"セル操作","全チェックボックスとセルをリンク","Sub チェックボックスのリンクを作成する()\r\n    Application.ScreenUpdating = False\r\n    Dim chkbox As CheckBox\r\n    For Each chkbox In Worksheets(\"マスタ\").CheckBoxes\r\n        chkbox.LinkedCell = chkbox.TopLeftCell.Address 'セルとリンクさせる\r\n        chkbox.TopLeftCell.NumberFormatLocal = \";;;\" 'さらに表示なし設定\r\n    Next chkbox\r\n    Application.ScreenUpdating = True\r\nEnd Sub"]
[88,"セル操作","行の自動色付け","条件付き書式でまずは『=CELL(\"ROW\")=ROW()』として背景色を設定しておく\r\n'そのあとにマクロをシートのイベントマクロに設定\r\nPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)\r\n    Application.ScreenUpdating = True '画面更新\r\nEnd Sub"]
[89,"セル操作","テーブル化","\r\n    With Worksheets(\"シート名\")\r\n        .ListObjects.Add Source:=.Range(\"A1:E5\")\r\n    \r\n        'CurrentRegionを使用するパターン\r\n        '.ListObjects.Add Source:=.Range(\"B42\").CurrentRegion\r\n    End With"]
[90,"セル操作","テーブル指定の３パターン","    With Worksheets(\"シート名\")\r\n        'テーブルの一部のセルから指定\r\n        .Range(\"B83\").ListObject.Range.Select\r\n        'テーブルが作られた番号で指定\r\n        .ListObjects(1).Range.Select\r\n        'テーブル名で指定\r\n        .ListObjects (\"テーブル2\")\r\n    End With"]
[91,"セル操作","テーブルの列を選択","   'テーブル内の２列目を選択 ※テーブル名『顧客情報テーブル』\r\n    Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル\").ListColumns(2).Range.Select"]
[92,"セル操作","テーブル列のデータ部分のみ選択","  '『顧客情報テーブル3』テーブル内の『ID』列データ部分のみを選択\r\n    Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル3\").ListColumns(\"ID\").DataBodyRange.Select"]
[93,"セル操作","テーブルへ例追加","    '『顧客情報テーブル4』の２列目に列（空）を追加\r\n    Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル4\").ListColumns.Add 2"]
[94,"セル操作","テーブルに列を追加し列名を指定","    '『顧客情報テーブル5』の２列目に『姓』列を追加\r\n    With Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル5\").ListColumns.Add(2)\r\n        .Range(1).Value = \"姓\"\r\n    End With\r\n"]
[95,"セル操作","テーブルに列を追加し値も設定する","    '『顧客情報テーブル5』の２列目に『姓』列を追加してみましょう！\r\n    Dim myData As Variant\r\n    myData = Array(\"姓\", \"有田\", \"金田\", \"斎藤\", \"田中\")\r\n    With Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル6\").ListColumns.Add(2)\r\n        .Range.Value = WorksheetFunction.Transpose(myData)\r\n    End With"]
[96,"セル操作","テーブルに列に追加しセル範囲の値を設定する","    'テーブルに列に追加し値を設定する\r\n    Dim myData As Variant\r\n    myData = Worksheets(\"シート名\").Range(\"F1:F5\").Value\r\n\r\n    With Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル6\").ListColumns.Add(2)\r\n        .Range.Value = myData 'この場合はTranspose関数不要　理由は二次元配列となるから\r\n    End With"]
[97,"セル操作","テーブル列を削除","　  '『顧客情報テーブル7』の『性別』列を削除してみましょう！\r\n    Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル7\").ListColumns(\"性別\").Delete"]
[98,"セル操作","テーブルの行を選択","    '『顧客情報テーブル8』の３行目を指定してみましょう！\r\n    Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル8\").ListRows(3).Range.Select\r\n"]
[99,"セル操作","テーブルに行追加と値設定","    '『顧客情報テーブル9』の3行目に『\"上田\"、\"男性\"、20』を追加\r\n    With Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル9\").ListRows.Add(3)\r\n        .Range.Value = Array(\"上田\", \"男性\", 20)\r\n    End With\r\n"]
[100,"セル操作","テーブル最終行に一行追加し値を設定する","   '『顧客情報テーブル9』の一番下の行に『\"川村\", \"女性\", 18』を追加\r\n                                                                               'ただ↓『Add』とすることで最終行に追加される\r\n    With Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル9\").ListRows.Add\r\n        .Range.Value = Array(\"川村\", \"女性\", 18)\r\n    End With"]
[101,"セル操作","テーブルの行を削除","    '『顧客情報テーブル10』の３行目を削除してみましょう！\r\n    Worksheets(\"シート名\").ListObjects(\"顧客情報テーブル10\").ListRows(3).Delete"]
[102,"セル操作","テーブル内検索","Sub ForEach検索()\r\n    'For Each～Nextステートメントを使用して氏名をメッセージボックスで表示　※『顧客情報テーブル13』\r\n    Dim myTable As ListObject\r\n    Set myTable = Sheet7.ListObjects(\"顧客情報テーブル11\")\r\n    Dim id As Long\r\n    id = Sheet7.Range(\"G47\").Value\r\n    \r\n    Dim idClm As Range, idRng As Range\r\n    Set idClm = myTable.ListColumns(\"ID\").DataBodyRange\r\n    For Each idRng In idClm\r\n        If idRng.Value = id Then\r\n            Dim userName\r\n            userName = idRng.Offset(0, 1).Value\r\n            Exit For\r\n        End If\r\n    Next\r\n    \r\n    MsgBox userName\r\nEnd Sub"]
[103,"セル操作","テーブル集計","Sub テーブル集計()\r\n     '『売上管理テーブル』の金額列の合計をMsgboxで表示してみよう！\r\n   Dim myTable As ListObject\r\n   Set myTable = Sheet8.ListObjects(\"売上管理テーブル\")\r\n   Dim priceClm As ListColumn\r\n   Set priceClm = myTable.ListColumns(\"金額\")\r\n   myTable.ShowTotals = True\r\n   priceClm.TotalsCalculation = xlTotalsCalculationSum\r\n   MsgBox priceClm.Total\r\n   myTable.ShowTotals = False\r\nEnd Sub"]
[104,"シート操作","シートの選択","Worksheets(\"〇〇\").Select"]
[105,"シート操作","シートオブジェクト名取得","Worksheets(\"シート名\").CodeName"]
[106,"シート操作","新規シート追加","Worksheets.Add"]
[107,"シート操作","新規シート追加＆名前変更","Worksheets.Add(After:=Sheet1, Count:=1).Name = \"データベース\""]
[108,"シート操作","シートをコピー＆挿入","    Sheets(\"●●\").Copy after:=Worksheets(\"●●\")’シートをコピー。afterは後ろに、beforeなら前に挿入される。\r\n    ActiveSheet.Name = \"〇〇〇\"’ついでに名前も付けておく。"]
[109,"シート操作","シートを削除する","    Application.DisplayAlerts = False’まずは削除していいですか？ のダイアログが表示されないようにする。\r\n        Sheets(\"〇〇\").Delete\r\n    Application.DisplayAlerts = True’ダイアログ非表示の解除"]
[110,"シート操作","シートを隠す","Sheets(\"シート名\").Visible=False"]
[111,"シート操作","シートイベント（値が変わったら実行）","シートモジュールで右上を『Change』にする。\r\nPrivate Sub Worksheet_Change(ByVal Target As Range)\r\n    If Target.Address = \"$D$3\" Then’もしD3セルの値が変更されたら実行される。\r\n        Msgbox \"変更されました\"\r\n    End If\r\nEnd Sub\r\n\r\n\r\n"]
[112,"シート操作","シートイベントを無効化","    Application.EnableEvents = False 'ここからイベントを無効にする。\r\n           'この処理中はイベントは発生しない。\r\n　　　　　 '例えばチェンジイベントの発生するセルへイベントなしで入力したいときなど\r\n    Application.EnableEvents = True 'ここからイベントを有効にする。"]
[113,"シート操作","右クリックイベント","Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)\r\n    MsgBox Target.Address(True, False)\r\n    Cancel = True’ここにTrueを入れると右クリック後のメニュー表示がなくなる。\r\nEnd Sub"]
[114,"シート操作","ハイパーリンク（各シート分）","    Dim firstShName As String, shName As String\r\n    firstShName = \"シート名\"\r\n    Dim i As Long\r\n    With Worksheets(firstShName)\r\n        For i = 2 To Worksheets.Count\r\n            shName = Worksheets(i).Name\r\n            .Hyperlinks.Add Anchor:=.Cells(2 + i, 2), Address:=\"\", _\r\n                                                                             SubAddress:=\"'\" & shName & \"'!A1\", _\r\n                                                                             TextToDisplay:=shName\r\n            Worksheets(i).Hyperlinks.Add Anchor:=Worksheets(i).Cells(1, 1), Address:=\"\", _\r\n                                                                             SubAddress:=\"'\" & firstShName & \"'!A1\", _\r\n                                                                             TextToDisplay:=\"←\" & firstShName & \"へ戻る\"\r\n        Next i\r\n    End With"]
[115,"シート操作","ハイパーリンク削除","Worksheets(\"シート名\").HyperLinks.Delete"]
[116,"ブック操作","ブックの保存","Workbooks(\"ブック名\").SaveAs filename:=\"C:〇〇\\〇〇\\〇〇\\名前.xlsm\"'途中（C:〇〇\\〇〇\\〇〇）が場所指定、最後（\\名前.xlsm）がファイル名"]
[117,"ブック操作","バックアップ作成","Sub バックアップ()\r\n    '前提としてブックと同じフォルダ内に『バックアップ』というフォルダがあるイメージです。本日の日付、時間も名前に含めて作成。\r\n    ThisWorkbook.SaveCopyAs ThisWorkbook.Path & \"\\バックアップ\\VBA管理ツール\" & Format(Now, \"yyyyMMddhhmmss\") & \".xlsm\"\r\n    MsgBox \"バックアップを保存しました。\"\r\nEnd Sub"]
[118,"ブック操作","他のブックを操作","    Dim wb As Workbook\r\n    For Each wb In Workbooks \r\n        If wb.name = \"エクセルデータ.xlsm\" Then’『エクセルデータ』というファイル名のデータなら繰り返しを止める。\r\n           Exit For\r\n        End If\r\n    Next\r\n    Msgbox wb.Name'このwbに他ブックが入っているのであとはwbを操作していけばOk"]
[119,"ブック操作","Excelを最前面へ持ってくる"," 'エクセルを最前面へ　（アクティブ）\r\n AppActivate Application.Caption"]
[120,"ブック操作","読み取り専用で他ブック開いて閉じるまで","    Dim wb As Workbook\r\n    Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & \"\\\" & \"ファイル名\" , UpdateLinks:=0, ReadOnly:=True)\r\n\r\n　　'ここに何らかの処理\r\n\r\n　　'処理が終わったら閉じる作用\r\n    Application.DisplayAlerts = False '『保存しますか？』のダイヤログを出ないようにする。\r\n        wb.Close '開いたブックを閉じる\r\n    Application.DisplayAlerts = True 'ダイヤログ制限を解除"]
[121,"ブック操作","他ブックをシートオブジェクト名で指定","Sub 他ブックへ値を入力()\r\n    '『元ブック』データを開いて値を入力してみよう！『データベース』\r\n    Dim wb As Workbook\r\n    Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & \"\\元ブック.xlsx\")\r\n    Dim sh As Worksheet\r\n    For Each sh In wb.Worksheets\r\n        If sh.CodeName = \"Sheet1\" Then\r\n            sh.Range(\"A1\").Value = \"見つけた\"\r\n        End If\r\n    Next\r\nEnd Sub"]
[122,"ブック操作","Excel97-2003形式で保存"," wb.SaveCopyAs (ThisWorkbook.Path & \"\\バックアップ\", FileFormat:=xlWorkbookNormal)"]
[123,"ファイル・フォルダ操作","ファイル検索","Sub ファイル検索()\r\n    Dim myFile As String, myPath As String\r\n    myPath = ’\"ファイルの場所をここに入れる\"例）C:\\User\\〇〇〇\\Desktop\\\"など\r\n    'ファイル検索\r\n    myFile = Dir(myPath & \"ファイル名.xlsm\", vbNormal)\r\n  \r\n    If myFile <> \"\" Then\r\n        Workbooks.Open Filename:=myPath & myFile\r\n    Else\r\n        MsgBox \"ファイルが見つかりません\"\r\n    End If\r\nEnd Sub"]
[124,"ファイル・フォルダ操作","フォルダ内ファイル検索","Sub ファイル名一覧取得()\r\n    Sheet1.Range(\"A:A\").Value = \"\"\r\n    \r\n    Dim myFile As String, filePath As String\r\n    filePath = ThisWorkbook.Path\r\n    myFile = Dir(filePath & \"\\*月分売上.xlsx\")\r\n    \r\n    If myFile = \"\" Then\r\n        MsgBox \"ファイルがみつかりません。\"\r\n        Exit Sub\r\n    End If\r\n    \r\n    Dim i As Long\r\n    i = 1\r\n    \r\n    \r\n    Do\r\n        Sheet1.Cells(i, 1).Value = myFile\r\n        i = i + 1\r\n        myFile = Dir()\r\n    Loop Until myFile = \"\"\r\n    \r\nEnd Sub"]
[125,"ファイル・フォルダ操作","選択ダイアログで選んだファイルを開く","Sub 選んだファイル開く()\r\n    Dim cnt As Long\r\n    Dim myFile As Variant '「ファイルを開く」の戻り値用\r\n    myFile = Application.GetOpenFilename(\"CSVファイル(*.csv),*.csv\")’カッコ内の左がファイル名,右がファイルの種類\r\n　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　’※このダイアログで選んだファイル名がmyFileに入る。\r\n    If myFile = False Then\r\n        Exit Sub\r\n    End If\r\n    '開く\r\n    Dim wb As Workbook\r\n    Set wb = Workbooks.Open(myFile)\r\nEnd Sub"]
[126,"ファイル・フォルダ操作","複数選択したファイルを開く","Sub Sample7()\r\n    Dim fileName As Variant\r\n    fileName = Application.GetOpenFilename(FileFilter:=\"Microsoft Excelブック,*.xls?\", _\r\n                                       MultiSelect:=True)\r\n    If IsArray(fileName) Then\r\n        Msgbox \"開く処理\"\r\n    Else\r\n        MsgBox \"キャンセルされました\"\r\n    End If\r\nEnd Sub"]
[127,"ファイル・フォルダ操作","FSO(FileSystemObject)の参照方法","ツール⇒参照設定⇒『Microsoft Scripting Runtime』に☑を入れる。これで準備完了"]
[128,"ファイル・フォルダ操作","FSO（参照設定なし）","Dim myFSO as Object\r\nset myFSO = createobject(\"Scripting.FileSystemObject\")"]
[129,"ファイル・フォルダ操作","FSOのファイルコピー","Dim myFSO as New FileSystemObject\r\nmyFSO.CopyFile Source:=\"C:\\Users\\〇〇〇\\Desktop\\コピーされるデータ.xlsm\", Destination:=\"C:\\Users\\〇〇〇\\Desktop\\バックアップ.xlsm\""]
[130,"ファイル・フォルダ操作","FSOでフォルダ作成"," fso.CreateFolder (ThisWorkbook.Path & \"\\\" & \"新フォルダ\")"]
[131,"ファイル・フォルダ操作","FSOでフォルダバックアップ","    Dim FSO As New FileSystemObject\r\n    Dim FSO As Object\r\n    Set FSO = CreateObject(\"Scripting.FileSystemObject\")\r\n    FSO.CopyFolder ThisWorkbook.Path & \"\\売上\", ThisWorkbook.Path & \"\\バックアップ\" & Format(Date, \"yyyyMMdd\")"]
[132,"ファイル・フォルダ操作","フォルダ内削除","    Dim myFSO As New FileSystemObject\r\n    Dim myFolder As Folder\r\n    Dim myFiles As Files, MyFile As File\r\n         \r\n    Set myFolder = myFSO.GetFolder(ThisWorkbook.Path & \"\\作成データ\")\r\n    Set myFiles = myFolder.Files\r\n    \r\n    For Each MyFile In myFiles\r\n        MyFile.Delete\r\n    Next"]
[133,"ファイル・フォルダ操作","ファイル一覧ハイパーリンク","Sub ファイル一覧取得()\r\n     Dim myFile As String, myFolder As String, filePath As String\r\n     \r\n     filePath = ThisWorkbook.Path\r\n     myFile = Dir(filePath & \"\\*.*\")\r\n\r\n     If myFile = \"\" Then\r\n         MsgBox \"ファイルがみつかりません。\"\r\n         Exit Sub\r\n     End If\r\n    \r\n     Dim i As Long\r\n     i = 0\r\n     \r\n     With Sheet1\r\n        Do\r\n           .Hyperlinks.Add Anchor:=.Cells(2 + i, 2), Address:=ThisWorkbook.Path & \"\\\" & myFile, _\r\n                                                                                SubAddress:=\"\", _\r\n                                                                                TextToDisplay:=myFile\r\n           i = i + 1\r\n           myFile = Dir()\r\n        Loop Until myFile = \"\"\r\n     End With\r\n     MsgBox \"完了しました。\"\r\n  \r\nEnd Sub\r\n"]
[134,"ファイル・フォルダ操作","選んだファイルのパスと名前","    Dim myFile As String\r\n    myFile = Application.GetOpenFilename() 'Excelファイルのみ表示する\r\n    MsgBox myFile"]
[135,"ファイル・フォルダ操作","選んだファイルのパスと名前とハイパーリンク","Sub ファイル一覧取得2()\r\n     \r\n     Sheet1.Range(\"B:B\").Clear\r\n     \r\n     Dim myFile As String, myFolder As String, filePath As String, folderPath As String\r\n     With Application.FileDialog(msoFileDialogFolderPicker)\r\n        If .Show = True Then\r\n            folderPath = .SelectedItems(1)\r\n        End If\r\n    End With\r\n     \r\n     myFile = Dir(folderPath & \"\\*.*\")\r\n\r\n     If myFile = \"\" Then\r\n         MsgBox \"ファイルがみつかりません。\"\r\n         Exit Sub\r\n     End If\r\n    \r\n     Dim i As Long\r\n     i = 0\r\n     \r\n     With Sheet1\r\n        Do\r\n           .Hyperlinks.Add Anchor:=.Cells(2 + i, 2), Address:=folderPath & \"\\\" & myFile, _\r\n                                                                                SubAddress:=\"\", _\r\n                                                                                TextToDisplay:=myFile\r\n           i = i + 1\r\n           myFile = Dir()\r\n        Loop Until myFile = \"\"\r\n    End With\r\n     MsgBox \"完了しました。\"\r\n    \r\nEnd Sub"]
[136,"ファイル・フォルダ操作","データ集計","Option Explicit\r\nDim toWb As Workbook\r\nSub データ集計()\r\n    Set toWb = ThisWorkbook\r\n    Dim fso As New FileSystemObject\r\n    Dim myFolder As Object\r\n    Set myFolder = fso.GetFolder(\"C:\\Users\\taaam\\OneDrive\\デスクトップ\\まとめシートへ選手権\\支店売上\")\r\n    Dim myFiles As Files\r\n    Set myFiles = myFolder.Files\r\n    Dim myFile As File\r\n    For Each myFile In myFiles\r\n        Call データ転記(myFile)\r\n    Next\r\n    MsgBox \"完了しました。\"\r\nEnd Sub\r\n\r\nSub データ転記(ByVal myFile As File)\r\n    Dim toLastRow As Long\r\n    toLastRow = toWb.Worksheets(\"売上\").Cells(Rows.Count, 1).End(xlUp).Row\r\n    Dim fromWb As Workbook\r\n    Set fromWb = Workbooks.Open(myFile)\r\n    With fromWb.Worksheets(\"売上情報\")\r\n        Dim fromLastRow As Long\r\n        fromLastRow = .Cells(Rows.Count, 1).End(xlUp).Row\r\n        Dim myRng As Range\r\n        Set myRng = .Range(.Cells(2, 1), .Cells(fromLastRow, \"I\"))\r\n        myRng.Copy toWb.Worksheets(\"売上\").Cells(toLastRow + 1, 1)\r\n    End With\r\n    fromWb.Close\r\nEnd Sub"]
[137,"ファイル・フォルダ操作","ファイル名変更","Sub Sample()\r\n    Name \"C:\\売上.xlsx\" As \"C:\\売上管理.xlsx\"         'リネーム\r\n    Name \"C:\\売上管理.xlsx\" As \"C:\\売上フォルダ\\売上管理.xlsx\"   '移動\r\nEnd Sub"]
[138,"Outlook操作","メール送信","Sub メール送信()\r\n    '参照設定している場合は次の1行\r\n    'Dim myOlApp As New Outlook.Application\r\n    \r\n    '参照設定不要のコードは下記の２行   \r\n    Dim myOlApp As Object\r\n    Set myOlApp = CreateObject(\"Outlook.Application\") \r\n\r\n    Dim myMail As Outlook.MailItem    \r\n    Set myMail = myOlApp.CreateItem(olMailItem)\r\n    With myMail\r\n        .To = \"fadfadsfadf@gggggmail.com\"'ここに送信先メールアドレス\r\n        .Subject = \"エクセルVBAについて\"'件名\r\n        .Body = \"お世話になっております。\"'本文\r\n        .Send'送信\r\n    End With\r\n        \r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\nEnd Sub"]
[139,"Outlook操作","メール連続送信","Sub メール連続送信()\r\n    '参照設定している場合は次の1行\r\n    'Dim myOlApp As New Outlook.Application\r\n    \r\n    '参照設定不要のコードは下記の２行\r\n    Dim myOlApp As Object\r\n    Set myOlApp = CreateObject(\"Outlook.Application\")\r\n\r\n    Dim myMail As Outlook.MailItem\r\n    '仮に『送信先』シートのA列に氏名、B列に送信先メールアドレス一覧があるとします。\r\n    With Worksheets(\"送信先\")\r\n        Dim lastRow As Long: lastRow = .Cells(Rows.Count, 1).End(xlUp).Row\r\n        Dim i As Long\r\n        For i = 1 To lastRow\r\n            Set myMail = myOlApp.CreateItem(olMailItem)\r\n            Dim toMail As String: toMail = Worksheets(\"送信先\").Cells(i, 2).Value 'メール\r\n            Dim toUser As String: toUser = Worksheets(\"送信先\").Cells(i, 1).Value '送信先\r\n            myMail.To = toMail\r\n            myMail.Subject = \"エクセルVBAについて\"\r\n            myMail.Body = toUser & \"様\" & vbCrLf & _\r\n                                  \"お世話になっております。\"\r\n            myMail.Send\r\n        Next i\r\n    End With\r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\nEnd Sub\r\n"]
[140,"Outlook操作","直近３件の受信メール一覧を取得","Sub 受信メール一覧()\r\n     '直近３件の受信メールの情報を下記セルへ取り出す\r\n    Dim myOlApp As New Outlook.Application\r\n    Dim myNs As Outlook.Namespace\r\n    Set myNs = myOlApp.GetNamespace(\"MAPI\")\r\n    Dim myFolder As Outlook.Folder\r\n    Set myFolder = myNs.GetDefaultFolder(olFolderInbox)\r\n    Dim i As Long, n As Long\r\n    n = 1\r\n    With myFolder.Items\r\n        .Sort \"[ReceivedTime]\", Descending:=True\r\n        For i = 1 To 3  'もしすべての件数を抽出するのであれば『1 To .count』にする。\r\n            On Error Resume Next  '送付できなかったメールのエラーを回避するために記述\r\n            Sheet11.Cells(30 + n, 3).Value = .Item(i).ReceivedTime\r\n            Sheet11.Cells(30 + n, 4).Value = .Item(i).SenderName\r\n            Sheet11.Cells(30 + n, 5).Value = .Item(i).Subject\r\n            Sheet11.Cells(30 + n, 6).Value = .Item(i).SenderEmailAddress\r\n            On Error GoTo 0\r\n            n = n + 1\r\n        Next i\r\n    End With\r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\nEnd Sub"]
[141,"Outlook操作","メールを作成（画面に表示）","Sub メール作成()\r\n    '参照設定している場合は次の1行\r\n    'Dim myOlApp As New Outlook.Application\r\n    \r\n    '参照設定不要のコードは下記の２行   \r\n    Dim myOlApp As Object\r\n    Set myOlApp = CreateObject(\"Outlook.Application\") \r\n\r\n    Dim myMail As Outlook.MailItem    \r\n    Set myMail = myOlApp.CreateItem(olMailItem)\r\n    With myMail\r\n        .To = \"fadfadsfadf@gggggmail.com\"'ここに送信先メールアドレス\r\n        .Subject = \"エクセルVBAについて\"'件名\r\n        .Body = \"お世話になっております。\"'本文\r\n        .Display\r\n    End With\r\nEnd Sub"]
[142,"Outlook操作","連絡先一覧取得","Sub 連絡先一覧()\r\n\r\n    Dim myOlApp As New Outlook.Application\r\n    Dim myNs As Outlook.Namespace\r\n    Set myNs = myOlApp.GetNamespace(\"MAPI\")\r\n    Dim myFolder As Outlook.Folder\r\n    Set myFolder = myNs.GetDefaultFolder(olFolderContacts)\r\n    Stop\r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\nEnd Sub"]
[143,"Outlook操作","連絡先情報取得","Sub 連絡先情報取得()\r\n    Dim myOlApp As New Outlook.Application\r\n    Dim myNs As Outlook.Namespace\r\n    Set myNs = myOlApp.GetNamespace(\"MAPI\")\r\n    Dim myFolder As Outlook.Folder\r\n    Set myFolder = myNs.GetDefaultFolder(olFolderContacts)\r\n    With myFolder.Items\r\n        Dim i As Long\r\n        For i = 1 To 3\r\n            Worksheets(\"連絡先\").Cells(i, 1).Value = .Item(i).LastName\r\n            Worksheets(\"連絡先\").Cells(i, 2).Value = .Item(i).FirstName\r\n            Worksheets(\"連絡先\").Cells(i, 3).Value = .Item(i).Email1Address\r\n        Next i\r\n    End With\r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\nEnd Sub"]
[144,"Outlook操作","連絡先検索","Sub 連絡先検索()\r\n    Dim myOlApp As New Outlook.Application\r\n    Dim myNs As Outlook.Namespace\r\n    Set myNs = myOlApp.GetNamespace(\"MAPI\")\r\n    Dim myFolder As Outlook.Folder\r\n    Set myFolder = myNs.GetDefaultFolder(olFolderContacts)\r\n    Dim olItem As Object\r\n    Dim myName As String\r\n    myName = Replace(Worksheets(\"連絡先\").Range(\"A1\").Value, \"　\", \" \")\r\n    With myFolder.Items\r\n        Set olItem = .Find(\"[FullName] = '\" & myName & \"'\")\r\n    End With\r\n    Worksheets(\"連絡先\").Range(\"B1\").Value = olItem.Email1Address\r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\nEnd Sub\r\n"]
[145,"Outlook操作","新規連絡先登録","Sub 新規連絡先登録()\r\n    Dim myOlApp As New Outlook.Application\r\n    Dim myNs As Outlook.Namespace\r\n    Set myNs = myOlApp.GetNamespace(\"MAPI\")\r\n    Dim inboxFolder As Outlook.Folder\r\n    Set inboxFolder = myNs.GetDefaultFolder(olFolderInbox)\r\n    Dim contactsFolder As Outlook.Folder\r\n    Set contactsFolder = myNs.GetDefaultFolder(olFolderContacts)\r\n    Dim senderMail As String\r\n    Dim foundMail As Object\r\n    With inboxFolder.Items\r\n        .Sort \"[ReceivedTime]\", Descending:=True\r\n        Dim i As Long\r\n        For i = 1 To 5 'もしすべての件数を抽出するのであれば『1 To .Count 』にする。\r\n            senderMail = .Item(i).SenderEmailAddress\r\n            Set foundMail = contactsFolder.Items.Find(\"[Email1Address]='\" & senderMail & \"'\")\r\n            If foundMail Is Nothing Then\r\n                Dim myContact As Outlook.ContactItem\r\n                Set myContact = myOlApp.CreateItem(olContactItem)\r\n                myContact.FullName = .Item(i).SenderName\r\n                myContact.Email1Address = .Item(i).SenderEmailAddress\r\n                myContact.Save\r\n            End If\r\n        Next i\r\n    End With\r\n    myOlApp.Quit\r\n    Set myOlApp = Nothing\r\n    MsgBox \"完了しました\"\r\nEnd Sub\r\n"]
[146,"ユーザーフォーム操作","ユーザーフォーム開く","    'ユーザーフォームのオブジェクト名（プロパティで確認）.Showで開く\r\n    UserForm1.Show"]
[147,"ユーザーフォーム操作","ユーザーフォーム表示位置","画面中央に表示する（特にマルチディスプレイを使用しているときは必須）\r\nPrivate Sub UserForm_Initialize()\r\n    Me.StartUpPosition = 0\r\n    Me.Top = Application.Top + ((Application.Height - Me.Height) / 2)\r\n    Me.Left = Application.Left + ((Application.Width - Me.Width) / 2)\r\nEnd Sub"]
[148,"ユーザーフォーム操作","ユーザーフォームに値を渡す","sub フォームに値を渡す()\r\n     Userform1.textbox1.value = \"あいうえお\" ' 結論⇒ユーザーフォームに引数は渡せない。対策⇒フォームを呼び出す前に値をセットしてしまう。\r\n     Userform1.show\r\n    \r\n　　 With Userform1.Listbox1\r\n　　 　  'パターン①リストボックスへ配列を渡す　\r\n         .List = 配列変数　’このときListboxのプロパティーでcolumnCountを変更し、表示列を増やしておかないと表示されないので注意\r\n\r\n        ’パターン②セル範囲ごとリストへ追加するコード\r\n    　　 .List = Range(\"A1：C10\").Value\r\n\r\n        'パターン③リストボックスへ値を一つ一つ単発で入力するには\r\n　　 　　.AddItem rng.value 'rng.valueは例。\r\n     End with\r\nend sub"]
[149,"ユーザーフォーム操作","ユーザーフォーム開くときにリストへ入力","    Private Sub UserForm_initialize()'これはフォームを開いたときのみ実行するという意味\r\n        With ListBox1\r\n　　　      .List = Range(\"A1：C10\").Value　\r\n        End With\r\n    End Sub"]
[150,"ユーザーフォーム操作","リストボックスに複数列を設定する","    'ユーザーフォーム上にリストボックスを配置\r\n    'リストボックスのプロパティーのcolumn.countを表示したい列数にする（例えば５列なら５を入力）\r\n    '列幅はcolumnWidthにそれぞれの列幅を設定する。５列なら『30;30;30;30;30;』と打つと幅30ptがそれぞれの列に設定できる。\r\n    'その後、値を抜き取るときはListbox1.List(0,1)など、配列と同じように抽出する。\r\n    '今回は例として全シート名をリストとして入力する\r\n    With Me.ListBox1\r\n        Dim ws As Worksheet\r\n        For Each ws In Worksheets\r\n            .AddItem \"\"\r\n            .List(.ListCount - 1, 0) = ws.Name\r\n            .List(.ListCount - 1, 1) = ws.Range(\"B1\").Value\r\n        Next\r\n    End With"]
[151,"ユーザーフォーム操作","リストボックスの注意点","ListboxのヘッダーはRowSourceを使用した場合にのみ表示可能。AddItemなどでデータを追加した場合は設定不可。\r\nただし、RowSourceを使用した場合は行追加ができないので要注意"]
[152,"ユーザーフォーム操作","リストボックスで選択されている値","    With Me.ListBox1\r\n        .List(.ListIndex, 0)'例えば２列目を取得したいのであれば.List(.ListIndex,1)となる\r\n    End With"]
[153,"ユーザーフォーム操作","リストボックスで選択がなければ終了","If Me.listBox1.listIndex = -1 Then Exit Sub"]
[154,"ユーザーフォーム操作","Deleteキーでリストボックスから削除","Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)\r\n    If KeyCode = 46 Then’もしDeleteキーが押されたら\r\n        Dim listIndex As Long\r\n        listIndex = Me.ListBox1.listIndex\r\n        Me.ListBox1.RemoveItem listIndex\r\n    End If\r\nEnd Sub"]
[155,"ユーザーフォーム操作","コンボボックス（プルダウンリスト）設定"," 　With ComboBox1     \r\n            .AddItem rng.Value’ひとつづつ追加          \r\n　　　　　’範囲ごと追加\r\n        　.List = Range(\"A1:C10\").Value\r\n    End With\r\n"]
[156,"ユーザーフォーム操作","テキストボックスにフォーカス","textbox1.Setfocus"]
[157,"ユーザーフォーム操作","テキストボックスを無効化","textbox1.enabled = false"]
[158,"ユーザーフォーム操作","テキストボックスでエンターキーでマクロ発生","左上の『（General）』を『TextBox1』に変更。\r\n'右上の『（Declarations）』をKeyDownに変更。\r\nPrivate Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)\r\n    If KeyCode = vbKeyReturn Then\r\n        MsgBox \"エンターキー\"\r\n    End If\r\nEnd Sub"]
[159,"ユーザーフォーム操作","ユーザーフォーム閉じる","ユーザーフォームモジュールに記述する場合\r\nUnload me\r\n'標準モジュールに記述する場合\r\nUnload Userform1'ユーザーフォーム名を記述する。"]
[160,"ユーザーフォーム操作","ユーザーフォーム自動で閉じる","↓ユーザーフォームモジュールに記述\r\nPrivate Sub UserForm_Activate()\r\n　　’ユーザーフォームの中で記述する\r\n    Application.OnTime Now + TimeValue(\"00:00:02\"), \"閉じる\"　’２秒後に『フォーム閉じる』マクロを実行する。\r\nEnd Sub\r\n\r\n'↓ここからは標準モジュールへ記述\r\nSub フォーム閉じる()\r\n    Unload Userform1'ユーザーフォーム名を記述\r\nEnd Sub"]
[161,"ユーザーフォーム操作","ユーザーフォームのすべてのコントロール","Userform.Controls"]
[162,"ユーザーフォーム操作","ユーザーフォームの１番目のコントロール","Userform.Controls(1)"]
[163,"ユーザーフォーム操作","ユーザーフォームのi番目のテキストボックス","    Dim i As Long\r\n    i = 1 to 5\r\n        Msgbox UserForm1.Controls(\"TextBox\" & i).Value\r\n    next i "]
[164,"ユーザーフォーム操作","ユーザーフォームのコンボボックスに重複なしのデータを入力","Private Sub UserForm_Initialize()'ユーザーフォーム開く直前にイベント発生。フォームモジュールに記述\r\n    Dim myDic As Object\r\n    Dim rng As Variant, rngs As Range\r\n    Set myDic = CreateObject(\"Scripting.Dictionary\")\r\n    With Worksheets(\"シート名\")\r\n        Set rngs = .ListObjects(\"テーブル名\").ListColumns(2).DataBodyRange\r\n    End With\r\n    For Each rng In rngs\r\n        If Not myDic.Exists(rng.Value) = True Then\r\n            myDic.Add rng.Value, 1\r\n        End If\r\n    Next\r\n    Dim myKey As Variant\r\n    myKey = myDic.Keys\r\n    Me.categoryCmbBox1.List = myKey\r\n    Set myDic = Nothing\r\nEnd Sub"]
[165,"ユーザーフォーム操作","プログレスバー実例","Dim startWidth As Double 'モジュールレベルで宣言\r\n\r\n'ここからはフォームを開く前にバーの幅を0にしておく。\r\nPrivate Sub UserForm_Initialize()\r\n    startWidth = Label1.Width '一番最初のバーの全体幅を代入しておく。\r\n    Label1.Width = 0 'バーの幅を0にする。\r\n\r\nEnd Sub\r\n\r\nPrivate Sub CommandButton1_Click()\r\n    Dim total As Long\r\n    total = 10000\r\n    Dim addWidth As Double\r\n    addWidth = startWidth / total\r\n    Dim myWidth As Double\r\n    myWidth = 0\r\n    Dim i As Long\r\n    \r\n    For i = 1 To total\r\n        Cells(i, 1).Value = i & \"行目\"\r\n        myWidth = myWidth + addWidth\r\n        Label1.Width = Round(myWidth)\r\n        DoEvents\r\n        Label1.Width = i / total * startWidth\r\n        Label2.Caption = Round(i / total * 100) & \"%処理完了\"\r\n    Next i\r\n    Unload Me\r\n    MsgBox \"処理終了\"\r\n    \r\nEnd Sub\r\n\r\n\r\n\r\n"]
[166,"ユーザーフォーム操作","プログレスバー（現状バー）","①最初にユーザーフォーム作成、そしてＬａｂｅｌ1とＬａｂｅｌ2を設置。\r\nLabel1はバー,Label2は外枠の表示に使う。\r\n’下準備→プロパティーウィンドウでLabel1のBackColorを青に変える。Label2のBackStyleを0-～にする。Label2を前面にする。\r\n'まずはプロシージャレベルで下記を定義\r\nDim myAddWidth As Double\r\n’ここからはフォームを開いた時にバーの幅を0にする作業\r\nPrivate Sub UserForm_Initialize()\r\n    myAddWidth = Label1.Width / 100\r\n    Label1.Width = 0\r\nEnd Sub\r\n\r\n’ここからはコマンドボタン「開始」を押したら実行するコード\r\nPrivate Sub CommandButton1_Click()\r\n    Dim i As Long, j As Long\r\n    For i = 1 To 100\r\n        For j = 1 To 5000000: Next j\r\n        Label1.Width = Label1.Width + myAddWidth\r\n        Label2.Caption = i & \"%\"\r\n        DoEvents\r\n    Next i\r\n    MsgBox \"処理終了\"\r\n    Unload Me\r\nEnd Sub"]
[167,"ユーザーフォーム操作","フォームコントロールとActiveXの違い","フォームコントロール\r\n・これはボタンを押したときとか、チェックボックスへチェックしたときとかをきっかけにマクロを実行するときなどに使う。\r\n・開発⇒挿入⇒フォームを選択　※こっちはVBAからの参照には適しないが、マクロ実行のきっかけには最適\r\n\r\n次はActiveXについて\r\n・デザインモードクリック⇒フォーム選択（このフォームは上記とは異なり、VBAからの参照に適している）"]
[168,"ユーザーフォーム操作","どのボタンからでも同じ処理実行","これを標準モジュールの一番上に配置\r\nPrivate cmdBtn(1 To 42) As New Class1 'コマンドボタンとクラスを紐づけ\r\n'これを標準モジュールのSubプロシージャに記述\r\n 'コマンドボタンとクラスを紐づけ\r\n    Dim i As Long\r\n    For i = 1 To 42\r\n        cmdBtn(i).NewClass Controls(\"CommandButton\" & i), i\r\n    Next\r\n’ここから下はクラスモジュール上に配置\r\nPrivate WithEvents Btn As MSForms.CommandButton\r\nPrivate Index As Integer\r\n\r\nPublic Sub NewClass(ByVal cmdBtn As MSForms.CommandButton, ByVal i As Integer)\r\n    Set Btn = cmdBtn\r\n    'コマンドボタンのインデックス番号を格納\r\n    Index = i\r\nEnd Sub\r\nPrivate Sub Btn_Click()\r\n    If UserForm1.Controls(\"CommandButton\" & Index).Caption = \"\" Then\r\n        Exit Sub\r\n    End If\r\n    Dim myYear As Long, myMonth As Long, myDay As Long\r\n    myYear = UserForm1.ComboBox1.Value\r\n    myMonth = UserForm1.monthComboBox.Value\r\n    myDay = UserForm1.Controls(\"CommandButton\" & Index).Caption\r\n    If UserForm1.toBox.BackColor = RGB(255, 255, 0) Then\r\n        UserForm1.toBox.Value = DateSerial(myYear, myMonth, myDay)\r\n    Else\r\n        UserForm1.fromBox.Value = DateSerial(myYear, myMonth, myDay)\r\n        UserForm1.toBox.BackColor = RGB(255, 255, 0)\r\n        UserForm1.fromBox.BackColor = RGB(255, 255, 255)\r\n    End If\r\nEnd Sub\r\n\r\n\r\n\r\n"]
[169,"ブラウザ操作","IE操作（URL開く）","    Dim IE As New InternetExplorer\n    IE.navigate \"http://〇〇〇\"’開きたいURL\n    IE.Visible = True’IEを見える化する（表示する）。デスクトップで確認ができるようになる。\n    'ブラウザ（IE）画面がすべて更新されるのを待つ\n    While IE.Busy = True Or IE.readyState < READYSTATE_COMPLETE\n        DoEvents\n    Wend"]
[170,"ブラウザ操作","IE操作（待機）","    'ブラウザ（IE）画面がすべて更新されるのを待つ\n    While IE.Busy = True Or IE.readyState < READYSTATE_COMPLETE\n        DoEvents\n    Wend"]
[171,"ブラウザ操作","IE操作（開いているウィンドウを指定）","Sub 起動中IE操作()\n    Dim sh As Object\n    Set sh = CreateObject(\"Shell.Application\")'Shell.Applicationとはエクスプローラーを操作するためのもの。\n    \n    Dim ie As InternetExplorer\n    Set ie = Nothing\n    \n    '起動中のWindowを一つずつ調べる。\n    Dim win As Object\n   \n    For Each  win In sh.Windows\n        If (TypeOf  win Is InternetExplorer) Then 'InternetExplorerであれば実行\n            If  win.Document.Title Like \"*〇〇*\" = True Then 'タイトルに〇〇が含まれるなら実行\n                Set ie =  win'winをieに渡す（これで変数ieにInternetExplorerのウィンドウが入る）\n                Exit For’ループを抜ける\n            End If\n        End If\n    Next\n\n    If Not (ie Is Nothing) Then'変数ieにウィンドウが入っているなら処理を実行する。\n        ie.Visible = True’まずはIEを見える化する。\n        'ここに処理を書く\n    End If     \n        "]
[172,"ブラウザ操作","iE自動スクロール","ie.navigate \"JavaScript:scrollTo(0,\" & ie.document.body.scrollHeight & \")\""]
[173,"ブラウザ操作","IE操作","Sub ネット操作()\n    'まずはIEのアドレスをセットする作業\n    Dim IE As New InternetExplorer\n    Dim i As Long\n    IE.navigate \"http://〇〇〇\" '開きたいURL\n    IE.Visible = True 'IEを見える化する（表示する）。デスクトップで確認ができるようになる。\n    'ブラウザ（IE）画面がすべて更新されるのを待つ\n    While IE.Busy = True Or IE.readyState < READYSTATE_COMPLETE\n        DoEvents\n    Wend\n    'HTMLドキュメントを設定する\n    Dim doc As HTMLDocument\n    Set doc = IE.document\n    Dim inp, inp2 As IHTMLInputElement\n    Set inp = doc.getElementsByName(\"userNo\")(0)\n    inp.Value = \"100728\"\n    \n    'ログイン画面のパスワード入力作業\n    Set inp2 = doc.getElementsByName(\"password\")(0)\n    \n    inp2.Value = \"123456abc\"\n    \n    \n    'ログイン開始のボタンを押す作業\n    Dim btn As IHTMLInputElement\n    \n    Set btn = doc.getElementsByTagName(\"input\")(1)\n    \n    btn.form.submit\n    \n    '待機\n    While IE.Busy = True Or IE.readyState < READYSTATE_COMPLETE\n        DoEvents\n    Wend\n    \n    Dim objIE As Object\n    \n    Set objIE = CreateObject(\"InternetExplorer.Application\")\n    \n    objIE.navigate \"http://************\"\n    objIE.Visible = True\n    \n    Do Until objIE.Busy = False\n        DoEvents\n    Loop\n    \n    For i = 0 To objIE.document.Links.Length - 1\n        If objIE.document.Links(i).href = \"javascript:doAction(01)\" Then\n            objIE.document.Links(i).Click\n            Exit For\n        End If\n    Next i\n\nEnd Sub"]
[174,"ブラウザ操作","IEフレーム指定","Private Declare Function SetForegroundWindow Lib \"user32\" (ByVal hWnd As Long) As Long 'ウィンドウを最前面表示するための定義\nSub 起動中IE操作()\n    'Shell.ApplicationのCOMをインスタンス化する。\n    Dim sh As Object\n    Set sh = CreateObject(\"Shell.Application\")\n    \n    'InternetExplorerのCOMをインスタンス化する。\n    Dim ie As InternetExplorer\n    Set ie = Nothing\n    \n\n    '起動中のWindowを一つずつ調べる。\n    Dim w As Object\n    Dim nowWin As String\n    nowWin = \"\"\n    \n    For Each w In sh.Windows\n        'InternetExplorerであれば\n        If (TypeOf w Is InternetExplorer) Then\n            'かつ、タイトルが一致すれば\n            If w.Document.Title Like \"*メンタエクセルサイト*\" = True Then\n                'そのインスタンスを変数ieにセットしループを抜けます。\n                \n                Set ie = w\n                nowWin = \"top\" '今のウィンドウが検索画面なら文字を代入\n                Exit For\n                \n            ElseIf w.Document.Title Like \"*その他のサイト*\" = True Then\n                'そのインスタンスを変数ieにセットしループを抜けます。\n                Set ie = w\n                \n                Exit For\n            End If\n        End If\n    Next\n    \n    '変数ieがnotingでなければ\n    If Not (ie Is Nothing) Then\n       \n        ie.Visible = True\n        \n        \n        \n        Dim objFrame As FramesCollection\n        Dim frameDoc As IHTMLDocument\n        Dim obj As Object\n        Dim i As Long\n        \n        If nowWin = \"\" Then 'もし検索画面以外にいるのなら実行する。\n            Set objFrame = ie.Document.frames\n            Set frameDoc = objFrame(\"leftFrame\").Document 'メインフレームを指定\n            Do Until objFrame(\"mainFrame\").Document.Title Like \"*検索*\" = True '検索画面まで戻るを押し続ける。\n                Set obj = frameDoc.getElementById(\"modoru\")\n                obj.Click '戻るをクリック\n                While ie.Busy = True Or ie.ReadyState < READYSTATE_COMPLETE '待機\n                    DoEvents\n                Wend\n               \n            Loop\n                \n            'ここから待機の作業を入れる。\n            While ie.Busy = True Or ie.ReadyState < READYSTATE_COMPLETE\n                DoEvents\n            Wend\n            \n        End If\n        \n        'フレームを指定\n        \n        \n       \n        Set objFrame = ie.Document.frames\n       \n        Set frameDoc = objFrame(\"mainFrame\").Document 'メインフレームを指定\n        \n        Set obj = frameDoc.getElementsByTagName(\"a\")\n        obj.Item(0).Click 'ボタンをクリックさせる\n       \n       \n       \n        'ここから待機の作業を入れる。\n       \n        While ie.Busy = True Or ie.ReadyState < READYSTATE_COMPLETE\n            DoEvents\n        Wend\n        \n        \n       \n        'ここからは宛名入力作業(フォームのテキストボックスへ）\n        Dim txtObj As HTMLInputElement\n        Dim objForm As Object\n        \n        Set objForm = frameDoc.forms(0)\n        \n        Set txtObj = objForm.Document.getElementsByName(\"kensaku.joken.data.kojinNo\")(0) '最後の（0）が重要\n        \n        txtObj.Value = ActiveCell.Offset(0, 1).Value\n        \n       \n        '検索ボタンをクリック\n        Dim btnObj As HTMLInputElement\n        Set btnObj = objForm.Document.getElementsByName(\"search\")(0) '最後の（0）が重要\n        \n        btnObj.Click\n        \n        \n        SetForegroundWindow (ie.hWnd) 'IE画面の最前面表示\n        \n    '変数ieがnothingのままであれば\n    Else\n        MsgBox \"見つかりません\"\n        \n    End If\n            \n            \nEnd Sub\n"]
[175,"ブラウザ操作","IE一致を探す","    'ここから口座を選択する作業\n    Dim kNum As Variant　’配列を入れるためにはvariant型を指定しないといけない。\n    Dim num As Variant\n    Dim str As String　’HTML上文字として口座番号が入力されているため、検索する数字も文字として探すため。\n    ’まずは下記の一行で複数のオブジェクトをｋNumへ配列として代入。※最後に（0）といれないので該当するものすべてが入る。\n    Set kNum =ie.Document.frames(\"mainFrame\").Document.getElementsByName(\"zaisanYochokinMeisaiData.kozaNo\")\n    str = Range(\"C7\").Value\n    \n    For Each num In kNum　’For Each　で配列内のすべてにアクセスし、numに代入していく。\n        \n        If num.Value = str Then’もしnumの値と探している文字列が一致すればExit Forで繰り返しを終わらせる。\n            \n            Exit For\n        End If\n    Next num\n\n    num.Click　’その該当するオブジェクトをクリックする。\n    \n    While ie.Busy = True Or ie.ReadyState < READYSTATE_COMPLETE\n        DoEvents\n    Wend\n    \n    Set btn = ie.Document.frames(\"mainFrame\").Document.getElementsByName(\"kousin2\")(0)\n    \n    btn.Click '修正クリック\n"]
[176,"ブラウザ操作","IE一致valueを探す","　　Dim var As Variant\n    Set var = ie.document.frames(\"mainFrame\").document.getElementsByTagName(\"input\")\n    Dim n As Variant\n    Dim z As Long\n    \n    For Each n In var\n        If n.Value = \"管理\" Then\n            Exit For\n        End If\n    Next n\n    n.Click"]
[177,"ブラウザ操作","IE 特殊な指定方法","Dim chk As HTMLInputElement\n                Set chk = ie.document.frames(\"mainFrame\").document.getElementById(\"NO\" & i & \"\")"]
[178,"ブラウザ操作","IE getElementBy","idが指定できる場合はsと（0）は不要\n    Set obj = getElementById(\"modoru\")\n    'name,classの場合は（0）を最後につけるのとsをつける。\n    Set obj = getElementsByName(\"namae\")(0)\n    'なお配列として代入する場合は（0）は不要\n    Dim obj As Variant\n    Dim num As Variant\n    Set obj = getElementsByTab(\"a\")\n    For Each num In obj\n        If num.innertext = \"更新\" Then\n              Exit For\n        End If\n    Next num"]
[179,"ブラウザ操作","IE最前面表示","Private Declare Function SetForegroundWindow Lib \"user32\" (ByVal hWnd As Long) As Long \nSetForegroundWindow (ie.hWnd) 'IE画面の最前面表示"]
[180,"ブラウザ操作","IE javascriptポップクリック","Private Declare Function GetLastActivePopup Lib \"user32\" (ByVal hwnd As Long) As Long\nPrivate Declare Function PostMessage Lib \"user32.dll\" Alias \"PostMessageA\" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long\n\nDim tagInput As Object\n        Dim n As Long　　　’流れとしては初めにjavascriptを使用してリンクをクリック。その後出現したポップアップをjacascriptでOKを押す。\n        Dim h As Long\n        Dim t As Single\n    \n       Set tagInput = ie.Document.frames(\"mainFrame\").Document.getElementsByTagName(\"input\")\n\n        For n = 0 To tagInput.Length - 1\n            If tagInput(n).Value = \"登録↓\" Then\n                ’これが最初にポップアップがでるボタンをクリックする作業　　　　　　'↓ここはシングルクォーテーションじゃないとだめ。\n              ie.document.frames(\"mainFrame\").document.Script.setTimeout \"javascript:document.getElementsByName('shobunBtn')(0).click();\", 200\n                t = Timer: Do While Timer - t < 1: DoEvents: Loop\n                SendKeys \"{ENTER}\"’これでポップアップ内のOKをクリック。\n\n                Exit For\n            End If\n        Next\n"]
[181,"ブラウザ操作","IEで隠れコード","もしhiddenが設定されているHTMLはVBAで読み込んでも出てこないことがある。その場合、name=hidden　とかを探す。それを指定する。"]
[182,"ブラウザ操作","IE チェックボックス","　　 '取消にチェック\n    Dim torikesi As HTMLInputElement\n    Set torikesi = ie.document.frames(\"mainFrame\").document.getElementById(\"SELTORIKESHI\")\n    torikesi.Checked = True\n    '上記でできなければtorikesi.clickでもＯＫ"]
[183,"ブラウザ操作","IE テキストボックス選択","    Set obj = IE.document.getElementsByName(\"〇〇\")\n    obj.Focus   'これで入力が反映されなかったところとかに入力できたりする。"]
[184,"ブラウザ操作","chrome操作初期設定（Selenium設定)","下記のURLを開き、『Release page』をクリック\r\nhttp://florentbr.github.io/SeleniumBasic/\r\n\r\n次に『SeleniumBasic-2.0.9.0.exe』をクリック\r\n　※もしかするとバージョンが変わっているかもです。\r\n\r\n\r\nインストールされたらそれを開き、\r\nNext→I accept the agreementにチェック→Next→Next→Install→Finish\r\n\r\n（次にWebドライバーインストール＆更新）\r\n\r\nエクスプローラー\r\n↓\r\nWindows(C:)\r\n↓\r\nユーザー\r\n↓\r\nアカウント名\r\n↓\r\n表示タブで『隠しファイル』にチェック\r\n↓\r\nAppData\r\n↓\r\nLocal\r\n↓\r\nSeleniumBasic\r\n\r\nこのフォルダ内の『chromedriver』を最新にする必要があります。\r\nまずはこのSeleniumBasicというフォルダのショートカットを作成してデスクトップにでも貼り付けておきます。\r\n\r\n次に下記URLからWebドライバーをインストールします。\r\nhttps://sites.google.com/a/chromium.org/chromedriver/downloads\r\n\r\nインストールするバージョンを現時点のchromeのバージョンに合わせる必要があります。\r\n\r\nchrome開く→右上の…が縦になっているアイコンをクリック→ヘルプ→Googlechromeについて→そこでバージョンを確認できます。\r\n\r\n先ほどのサイトでそのバージョンに一番数字の近い『ChromeDriver 〇〇.〇.〇〇〇〇～』をクリック\r\n次に『chromedriver_win32.zip』をクリック\r\n\r\nインストールしたら開く→その中の最新のWebドライバーをデスクトップにショートカットを作っていたフォルダ内にペーストして古いchromedriverと入れ替えます。\r\n\r\n\r\n（最後にExcel側で参照設定）\r\n\r\n開発タブ→VBE→ツールタブ→参照設定→『Selenium Type Library』にチェック\r\n\r\nこれで準備は完了\r\n"]
[185,"ブラウザ操作","chrome開く","Sub chrome開く()\r\n    'Googleクロームでサイトを開く\r\n    Dim driver As New Selenium.WebDriver\r\n    driver.Start \"chrome\"\r\n    driver.Get \"https://～\"'開きたいサイトのURL\r\n    driver.Wait 10\r\n    Stop'これでわざと一時停止している。再開する場合はF5\r\n    driver.Close\r\n    Set driver = Nothing\r\nEnd Sub\r\n"]
[186,"ブラウザ操作","chromeでボタンクリック","Sub idで操作()\r\n    Dim driver As New Selenium.WebDriver\r\n    driver.Start \"chrome\"\r\n    driver.Get \"https://～\"'開生きたいサイトURL\r\n    driver.Wait 10\r\n　　'押したいボタンの要素を取得するには'chromeのデベロッパーツールを使用する。\r\n　　'サイト上で右クリック→『検証』→デベロッパーツールの左上角のマウスのようなアイコンクリックして、ボタンをクリック\r\n    'そのHTMLの上で右クリック→copy→Copy outerHMTLで要素をコピー\r\n    'その後イミディエイトウィンドウにでも貼り付けてその中の『id=\"〇〇\"』の〇〇の部分を下記の〇〇に入力\r\n    Dim elm As Selenium.WebElement\r\n    Set elm = driver.FindElementById(\"〇〇\")\r\n    elm.Click\r\n    \r\n    Stop\r\n    driver.Close\r\n    Set driver = Nothing\r\n\r\nEnd Sub"]
[187,"ブラウザ操作","chromeの入力欄にテキストを入力する","　　'chromeの開き方は他のマクロを参考にしてください。\r\n　　Dim elm As Selenium.WebElement\r\n    Set elm = driver.FindElementByName(\"your-name\")\r\n    elm.SendKeys \"メンタ太郎\""]
[188,"図形・グラフ操作","図形の挿入","　　With Sheets(\"シート名\").Range(\"E3:F3\")\r\n        Sheets(\"シート名\").Shapes.AddShape(Type:=msoShapeLeftArrow, _’矢印を挿入 ’タイプを調べたければネットでmsoShapeで検索\r\n        Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select '　　　　　　\r\n    End With"]
[189,"図形・グラフ操作","図形の削除","    Dim sb As Shapes\r\n    Set sb = Shapes\r\n    Dim str As Object\r\n    For Each str In sb\r\n        If str.name Like \"*Left Arrow*\" = True Then\r\n            str.Delete\r\n        End If\r\n    Next"]
[190,"図形・グラフ操作","図形の移動","    With Sheets(\"シート\").Shapes(5)\r\n        .Left = Sheets(\"シート\").Range(\"Q4\").Left’セルQ４に左端を合わせる\r\n        .Top = Range(\"Q4\").Top\r\n    End With"]
[191,"図形・グラフ操作","オブジェクト選択モード","Sub オブジェクト選択モード()\r\n    With Application.CommandBars.FindControl(ID:=182)\r\n        If .State = msoButtonUp Then .Execute\r\n    End With\r\nEnd Sub"]
[192,"図形・グラフ操作","選択中のオブジェクト名","?selection.name　’イミディエイトウィンドウで入力すると選択中のオブジェクトの名前がわかる。"]
[193,"図形・グラフ操作","複数図形選択名前","もし二つ選択しているなら\r\ndebug.print Selection.ShapeRange(1).Name\r\ndebug.print Selection.ShapeRange(2).Name"]
[194,"図形・グラフ操作","動く図形","    With Sheets(\"シート名\").Shapes(\"Right Arrow 1\")'矢印図形が挿入されていること前提\r\n        Dim i As Long: i = 0\r\n        Dim n As Long: n = 0\r\n        .Left = 417\r\n        .Top = 105\r\n        Do Until n = 2\r\n            Do Until i = 10\r\n                .IncrementLeft 1\r\n                i = i + 1\r\n                DoEvents\r\n            Loop\r\n            i = 0\r\n            Do Until i = 10\r\n                .IncrementLeft -1\r\n                i = i + 1\r\n                DoEvents\r\n            Loop\r\n            i = 0\r\n        n = n + 1\r\n        Loop\r\n        Do Until i = 5\r\n            .IncrementLeft 1\r\n            i = i + 1\r\n            DoEvents\r\n        Loop\r\n    End With"]
[195,"図形・グラフ操作","図形繋ぐ（横）","Sub 図形つなぐ横()\r\n    Dim shape1 As Shape, shape2 As Shape, shp As Shape\r\n    Set shape1 = Selection.ShapeRange(1)\r\n    Set shape2 = Sheets(\"Sheet1\").Shapes.AddShape(Type:=msoShapeRectangle, Left:=shape1.Left + 200, Top:=shape1.Top, Width:=shape1.Width, Height:=shape1.Height)\r\n    \r\n    Dim shapeCon As Shape\r\n    Set shapeCon = Sheets(\"Sheet1\").Shapes.AddConnector(msoConnectorStraight, 1, 1, 1, 1)\r\n    With shapeCon\r\n        .ConnectorFormat.BeginConnect shape1, 1’この最後の数字は図形のどの位置につなぐかの指定。\r\n        .ConnectorFormat.EndConnect shape2, 1\r\n        .RerouteConnections’これを書くと上記で指定したのがリセットされて、一番短距離でつなぎ直される。\r\n    End With\r\n  　shape2.Fill.ForeColor.RGB = RGB(255, 255, 255)'塗りつぶし色\r\n    shapeCon.Line.ForeColor.RGB = RGB(0, 0, 0)’枠線色\r\n    shape2.Line.ForeColor.RGB = RGB(0, 0, 0)\r\n    shape2.TextFrame.Characters.Text = \"\"\r\n　　shape2.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 0, 0)’文字色黒\r\n    shape2.Select\r\nEnd Sub"]
[196,"図形・グラフ操作","図形繋ぐ（下）","Sub 図形つなぐ横()\r\n    Dim shape1 As Shape, shape2 As Shape, shp As Shape\r\n    Set shape1 = Selection.ShapeRange(1)\r\n    Set shape2 = Sheets(\"Sheet1\").Shapes.AddShape(Type:=msoShapeRectangle, Left:=shape1.Left, Top:=shape1.Top+100, Width:=shape1.Width, Height:=shape1.Height)\r\n    \r\n    Dim shapeCon As Shape\r\n    Set shapeCon = Sheets(\"Sheet1\").Shapes.AddConnector(msoConnectorStraight, 1, 1, 1, 1)\r\n    With shapeCon\r\n        .ConnectorFormat.BeginConnect shape1, 1\r\n        .ConnectorFormat.EndConnect shape2, 1\r\n        .RerouteConnections\r\n    End With\r\n    shape2.Fill.ForeColor.RGB = RGB(255, 255, 255)'塗りつぶし色\r\n    shapeCon.Line.ForeColor.RGB = RGB(0, 0, 0)’枠線色\r\n    shape2.Line.ForeColor.RGB = RGB(0, 0, 0)\r\n    shape2.TextFrame.Characters.Text = \"\"\r\n　　shape2.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 0, 0)’文字色黒\r\n    shape2.Select\r\nEnd Sub"]
[197,"図形・グラフ操作","繋がった図形名","　　Dim shapeCon As Shape\r\n    Set shapeCon = Sheets(\"Sheet1\").Shapes.AddConnector(msoConnectorStraight, 1, 1, 1, 1)\r\n    With shapeCon\r\n        .ConnectorFormat.BeginConnect shape1, 1\r\n        .ConnectorFormat.EndConnect shape2, 1\r\n        .RerouteConnections\r\n    End With\r\n    ’ここからつながった図形の名前を出す。\r\n　　Dim shapeC As Shape\r\n    Set shapeC = shapeCon.ConnectorFormat.BeginConnectedShape\r\n    MsgBox shapeC.Name\r\n    "]
[198,"図形・グラフ操作","コネクタが繋がっている支店","con.ConnectorFormat.BeginConnectionSite"]
[199,"図形・グラフ操作","追いかけて図形を表示","図形矢印を画面に追いかけて表示\r\nPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)\r\n    With ActiveWindow.VisibleRange\r\n    Me.Shapes(\"Left Arrow 2\").Left = .Left + .Width - Me.Shapes(\"Left Arrow 2\").Width - 50\r\n    Me.Shapes(\"Left Arrow 2\").Top = .Top + .Height - Me.Shapes(\"Left Arrow 2\").Height - 10\r\n    End With\r\nEnd Sub\r\n"]
[200,"図形・グラフ操作","円グラフ操作","    With ActiveSheet.Shapes.AddChart.Chart '円グラフ\r\n        \r\n        .ChartType = xlPie\r\n        .SetSourceData Source:=Sheets(\"グラフ\").Range(\"A2:I3\")\r\n        \r\n    End With\r\n    \r\n    'ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).HasDataLabels = True 'これで数値を表示する。\r\n    ActiveSheet.ChartObjects(1).Chart.ApplyDataLabels ShowCategoryName:=True 'これで分類名を表示する\r\n    ActiveSheet.ChartObjects(1).Chart.ApplyDataLabels ShowCategoryName:=True, ShowPercentage:=True'これなら％も表示できる"]
[201,"図形・グラフ操作","グラフ等すべて削除","ActiveSheet.ChartObjects.Delete"]
[202,"図形・グラフ操作","図形の配置されているセル範囲","　Dim rng As Range\r\n　With ActiveSheet.Shapes(1)\r\n　　Set rng = Range(.TopLeftCell, .BottomRightCell)\r\n　End With\r\n\r\n　MsgBox rng.Address(False, False)\r\n\r\nEnd Sub"]
[203,"構文","メッセージボックス","MsgBox \"文字列\", Title:=\"2週間以内通知予定\""]
[204,"構文","メッセージ分岐","    If MsgBox(prompt:=\"○○しますか？\", Buttons:=vbOKCancel) = vbOK Then\r\n        'ここに処理を書く\r\n    End If"]
[205,"構文","メッセージ分岐②","    Dim choice As Integer\r\n    choice = MsgBox(prompt:=\"○○しますか？\", Buttons:=vbYesNoCancel, Title:=\"作業名\")\r\n    If choice = vbYes Then\r\n        Range(\"A1\").Value = \"○\"\r\n    ElseIf choice = vbNo Then\r\n        Range(\"A1\").Value = \"×\"\r\n    End If"]
[206,"構文","文字を含むかどうか","    Dim userName As String\r\n    userName = \"田中\"\r\n    If Range(\"A1\").Value Like \"*\" & userName & \"*\" = True Then  'A1セルに『田中』という文字が含まれるなら実行。\r\n          MsgBox \"含まれます。\"\r\n    End If"]
[207,"構文","文字を含む（複数文字）","    Dim myText As String\r\n    myText = \"はい、よろしくお願いいたします。\"\r\n\r\n    '変数myTextに『あ、い、う、え、お』のいずれかが含まれていれば処理実行\r\n    If myText Like \"*[あいうえお]*\" = True Then\r\n        MsgBox \"含まれています。\"\r\n    End If"]
[208,"構文","指定した文字（複数）以外が含まれているか","    Dim myText As String\r\n    myText = \"123番地\"\r\n\r\n    '変数myTextに『あ、い、う、え、お』のいずれかが含まれていないならば処理実行\r\n    If myText Like \"*[!0123456789]*\" = True Then\r\n        MsgBox \"数字以外が含まれています。\"\r\n    End If\r\n"]
[209,"構文","指定した文字範囲を含むかどうか","    Dim myText As String\r\n    myText = \"Amiさん\"\r\n\r\n    '変数myTextに『A-Z』のいずれかが含まれているならば処理実行\r\n    'ただし、左側を小さく（数字なら0に近く、アルファベットならAに近い方）しなければなりません。\r\n    If myText Like \"*[A-Z]*\" = True Then\r\n        MsgBox \"アルファベットが含まれています。\"\r\n    End If\r\n"]
[210,"構文","指定した文字範囲以外を含むかどうか","    Dim myText As String\r\n    myText = \"鈴木健太\"\r\n\r\n    '変数myTextに『A-Z』以外の文字が含まれているならば処理実行\r\n    'ただし、左側を小さく（数字なら0に近く、アルファベットならAに近い方）しなければなりません。\r\n    If myText Like \"*[!A-Z]*\" = True Then\r\n        MsgBox \"アルファベットのみで記述してください。\"\r\n    End If\r\n"]
[211,"構文","文字かどうか","    If TypeName(ActiveCell.Value) = \"String\" Then\r\n           MsgBox \"選択中のセルの値は文字列です。\"\r\n    End If"]
[212,"構文","数値かどうかチェック","    Dim val As Variant\r\n    val = \"あいうえお\"'←ここにチェックしたい値を入れます。\r\n    Select Case IsNumeric(val)\r\n        Case True\r\n            MsgBox \"数字です。\"\r\n        Case False\r\n            MsgBox \"数字ではありません。\"\r\n    End Select\r\n"]
[213,"構文","日付かどうか","    Dim val As Variant\r\n    val = \"2022/09/11\" '←ここにチェックしたい値を入れます。他）Activecell.value\r\n    Select Case IsDate(val)\r\n        Case True\r\n            MsgBox \"日付です。\"\r\n        Case False\r\n            MsgBox \"日付ではありません。\"\r\n    End Select\r\n\r\n"]
[214,"構文","Case","    Select Case Range(\"A1\").Value\r\n         Case 値1\r\n                 MsgBox (\"1\")\r\n         Case 値2\r\n                 MsgBox (\"2\")\r\n         Case Else\r\n                 MsgBox (\"それ以外\")\r\n    End Select"]
[215,"構文","Cace(〇〇以上、〇〇以下）","    If Range(\"A1\").Value <> \"\" Then\r\n        Select Case Range(\"A1\").Value\r\n            Case Is >= 80\r\n                MsgBox \"合格\"\r\n            Case Is >= 70\r\n                MsgBox \"おしい！\"\r\n            Case Is >= 0\r\n                MsgBox \"もう少し勉強しましょう。\"\r\n        End Select\r\n    End If"]
[216,"構文","Case(グループ分け）","    Select Case Range(\"A1\").Value\r\n        Case 1, 2, 3 '1か2か3だった場合\r\n            MsgBox (\"グループ1\")\r\n        Case 4, 5, 6\r\n            MsgBox (\"グループ2\")\r\n        Case Else\r\n            MsgBox (\"それ以外\")\r\n    End Select"]
[217,"構文","Case（含むかどうか数パターンver）","     Dim myText As String: myText = \"鈴木　さとし\"\r\n     Select Case True 'はじめにTrueを書く\r\n        Case myText Like \"*田中*\" '『田中』を含んでいれば実行\r\n            MsgBox \"田中さん\"\r\n        Case myText Like \"*鈴木*\"\r\n            MsgBox \"鈴木さん\"\r\n        Case myText Like \"*松田*\"\r\n            MsgBox \"松田さん\"\r\n    End Select\r\n"]
[218,"構文","Case(範囲内かどうか）","    Dim a As Long\r\n    a = 7\r\n    Select Case　a \r\n        Case 1 To 10 '１～10の間なら実行\r\n            Msgbox \"１～１０の範囲内です。\"\r\n    End Select"]
[219,"構文","文字を分ける","    Dim tmp As Variant\r\n    tmp = Split(\"あいうえお\", \"う\") '『う』の前と後で分ける。\r\n    msgbox \"前の文字は『\" & tmp(0) & \"』で、後の文字は『\" & tmp(1) & \"』です。\""]
[220,"構文","テキスト改行","MsgBox \"情報が入力されました。\" & vbCrLf & \"住所等に誤りがないか確認してください。\""]
[221,"構文","エラー無視","    On Error Resume Next\r\n  　  'エラー無視したい何らかの処理をここに記述\r\n    On Error GoTo 0 '←これを記述した以降はエラー無視されなくなる。"]
[222,"構文","エラー（GoTo)","Sub エラー対策()\r\n    On Error GoTo errorLabel\r\n   \r\n       '処理をここに書く。\r\n        \r\n    Exit Sub 'エラーが起こらないならここで処理終了。\r\nerrorLabel: 'エラーならここに飛んでくる。\r\n    MsgBox \"エラーです。入力し直してください。\" 'エラー時の処理\r\nEnd Sub"]
[223,"構文","１か月前","    If DateAdd(\"m\", -1, Date) < Range(\"F5\").Value Then 'もし今日から１か月前がF5セルの日よりも前なら実行　※Date = 今日\r\n        MsgBox \"１か月前は\" & DateAdd(\"m\", -1, Date) & \"です。\" & vbLf & Range(\"F5\").Value & \"より前です。\"\r\n    End If"]
[224,"構文","１週間前","    If DateAdd(\"ww\", -1, Date) < Range(\"F5\").Value Then 'もし今日から一週間前がF5の日よりも前なら実行\r\n        MsgBox \"一週間前は\" & DateAdd(\"ww\", -1, Date) & \"です。\" & ｖｂLf & Range(\"F5\").Value & \"より前です。\"\r\n    End If"]
[225,"構文","繰返し処理（～まで）","    Do Until Activecell.Value=\"\"’アクディブセルが空白になるまで続ける\r\n        If Activecell.value=\"\"then\r\n            Exit do'この記述で途中ある用件を満たしたら処理を中断することも可能になる。今回はアクティブセルが空白になった場合中断。\r\n        Endif\r\n　　　'処理\r\n    Loop"]
[226,"構文","繰返し処理（～の間）","    Do while Activecell.Value<>\"\"’アクティブセルが空白でないうちは続ける\r\n        If Activecell.value=\"\"then\r\n            Exit do'この記述で途中ある用件を満たしたら処理を中断することも可能になる。今回はアクティブセルが空白になった場合中断。\r\n        Endif\r\n　　  　'処理\r\n    Loop"]
[227,"構文","マクロ中断（デバッグ）","Stop ’をコードの途中に記述する。そこで中断される。"]
[228,"構文","デザインモード","開発タブの中のデザインモードを押すと、編集できないボタンなどが動くようになる。"]
[229,"構文","配列変数に配列を格納する","    Dim arrVar(3) As String\r\n    arrVar(0) = \"リンゴ\"\r\n    arrVar(1)=\"ミカン\"\r\n    arrVar(2)=\"バナナ\"\r\n    arrVar(3)=\"ブドウ\"\r\n    Dim arr() As variant '配列を格納される変数は必ずVariant型じゃないといけません。\r\n    arr = arrVar 'setは不要\r\n    Msgbox join(arrVar)"]
[230,"構文","配列（静的）","    Dim tainou(4) As String   ’これは変数に５つの配列を入れる部屋を作るという意味\r\n    tainou(0) = \"一番目の値だよ\"　’（0）が一番目\r\n    tainou(1) =  \"二番目の値だよ\"　’（1）が二番目\r\n    msgbox tainou(0)　'これで『一番目の値だよ』が表示される。"]
[231,"構文","動的配列","    Dim tainou() As String   ’要素数を最初は指定しないパターン（動的配列）\r\n    redim tainou(2)'ここで定義　※つまり動的配列はRedimで定義しないと使えないということ。\r\n    tainou(0) = \"一番目の値だよ\"　’（0）が一番目\r\n    tainou(1) = \"二番目の値だよ\"　’（1）が二番目\r\n    msgbox tainou(1)　’結果『二番目の値だよ』が表示される。"]
[232,"構文","動的配列に要素追加","    Dim var() As Variant'必ず最初は要素数を決めない（）のみで宣言する。\r\n    Redim var(0)'あとから定義。\r\n    Var(0) = \"あ\"\r\n    Redim Preserve var(1) 'このpreserveを付けないとvar(0)に入れていたデータもリセットされていまうので忘れないように。\r\n    Var(1) = \"い\""]
[233,"構文","配列にセル範囲の値を格納","    Dim arr() As Variant\r\n    arr = Range(\"A1:C5\").Value 'これでセル範囲を配列として変数に代入。\r\n    MsgBox arr(4, 3) 'これで座標に該当するセルの値を表示する。"]
[234,"構文","配列の要素数（最後の要素番号）取得","Ubound(arr)’arrは仮の変数名"]
[235,"構文","文字列から配列へ","    Dim arr() Aｓ　String\r\n    arr = Split(\"A,B,C\",\",\")'『,』を基準に文字列を分けて配列にするということ。つまりAとBとCに分かれるということ。"]
[236,"構文","配列から文字列へ","Debug.Print Join(arr,\",\")『,』を間に挟んで文字列へ変換する。そしてそれをイミディエイトウィンドウに表示するコード"]
[237,"構文","簡単配列化","    Dim arr() As variant\r\n    arr = Array(\"リンゴ\",\"みかん\",\"バナナ\")\r\n　　Msgbox join(arr)\r\n"]
[238,"構文","配列の詳細を確認（ローカルウィンドウ）","    Dim var() as variant\r\n    var = Fange(\"A1:E5\").Value\r\n    stop 'これでプログラムが一時停止する　　その後　表示→ローカルウィンドウ　で配列の内容が確認できる！"]
[239,"構文","一次元配列をMsgboxで表示","    Dim arrFruits(2) As String\r\n    arrFruits(0) =\"ミカン\"\r\n    arrFruits(1) =\"リンゴ\"\r\n    arrFruits(2) =\"ナシ\"\r\n  \r\n    Msgbox Join(arrFruits)"]
[240,"構文","二次元配列をMsgboxで表示","    Dim arr() As Variant\r\n    arr = Range(\"A1:C5\").Value 'これでセル範囲を配列として変数に代入。\r\n    Dim myStr As String\r\n    Dim r As Long, c As Long\r\n    For r = LBound(arr) To UBound(arr) 'Lboundは配列の最初の要素番号、Uboundは配列の最後の要素番号\r\n        For c = 1 To 3 '今回の配列の列数は3のため\r\n            Select Case c\r\n                Case 1\r\n                    myStr = myStr & arr(r, c)\r\n                Case Else\r\n                    myStr = myStr & \",\" & arr(r, c)\r\n            End Select\r\n        Next c\r\n        myStr = myStr & vbCrLf\r\n    Next r\r\n    \r\n    MsgBox myStr\r\n\r\n"]
[241,"構文","二次元配列に列追加","    Dim var() As variant'必ず最初は要素数を決めない（）で宣言する。\r\n    Redim var(0,0)'あとから定義。\r\n    Var(0,0) = \"あ\"\r\n    Redim Preserve var(0,1) 'このPreserveを付けないとvar(0,0)に入れていたデータもリセットされていまうので忘れないようにする。\r\n    Var(0,1) = \"い\"\r\n    ’ちなみにRedim Preserve var(1,0)のように行数を増やすことはできない。これではインデックスの範囲外とエラーになる。Preserveで増やせるのは列数のみ。\r\n    'ただしTransposeワークシート関数を使った裏技あり。"]
[242,"構文","二次元配列に行を追加する","    Dim var() As Variant '必ず最初は要素数を決めない（）で宣言する。\r\n    ReDim var(0, 0) 'あとから定義。\r\n    var(0, 0) = \"あ\"\r\n    ReDim Preserve var(0, 1) '列は増やせる\r\n    var(0, 1) = \"い\"\r\n    Dim arr() As Variant\r\n    arr = Application.WorksheetFunction.Transpose(var) 'これで行と列を縦横入れ替える\r\n                                                                                 'ただし、0ではなく1が開始要素番号となり、行番号が１増加している。\r\n    ReDim Preserve arr(1 To UBound(arr), 1 To UBound(var) + 2) '列なら増やせる。\r\n    arr(1, UBound(var) + 2) = \"か\"\r\n    arr(2, UBound(var) + 2) = \"き\"\r\n    \r\n    var = Application.WorksheetFunction.Transpose(arr) '再び縦横を入れ替え元に戻す\r\n    Stop\r\n"]
[243,"構文","配列活用事例（配列でデータ加工＆転記）","　 '『マスタ』シートの情報を『貼付け先』シートへ転記するのを配列で行うマクロ\r\n   'さらに取り込んだデータを加工する（今回はデータを結合して情報を減らす。）\r\n   '例）都道府県と市区町村と番地に分かれているのをくっつけて転記する等。\r\n   'データ量が多い場合は配列使用が最速になる\r\n 　'まずは『マスタ』シートの情報を配列へ全て格納する\r\n    Dim arrUserData() As Variant\r\n    With Sheets(\"マスタ\")\r\n        arrUserData = .Range(.Cells(1, 1), .Cells(Rows.Count, 10).End(xlUp))'配列に格納\r\n    End With\r\n    \r\n    '次に二次元配列を用意する。\r\n    Dim arrToData() As String\r\n    ReDim arrToData(1 To UBound(arrUserData), 1 To 5)’Redeim　変数名(行数,列数)　で要素数を再定義\r\n    \r\n    '配列へシートの情報（arrUserData)を入れていく。さらに加工も行いながら転記してみる\r\n   \r\n    Dim i As Long\r\n    For i = 1 To UBound(arrUserData)'配列の行数分繰り返される。さらにセルを配列にした場合は開始番号は1\r\n        arrToData(i, 1) = arrUserData(i, 1) & arrUserData(i, 2) '都道府県+地区名\r\n        arrToData(i, 2) = arrUserData(i, 3) & \"　\" & arrUserData(i, 4) '番地+アパート名\r\n        arrToData(i, 3) = arrUserData(i, 6) '氏名\r\n        arrToData(i, 4) = arrUserData(i, 7) 'フリガナ\r\n        arrToData(i, 5) = DateSerial(arrUserData(i, 8), arrUserData(i, 9), arrUserData(i, 10)) '『年』『月』『日』を繋げる\r\n    Next\r\n    \r\n    '配列(arrOki)から情報をシートへ貼り付ける。\r\n    With Sheets(\"貼り付け先\")\r\n        .Range(.Cells(2, 1), .Cells(2 + UBound(arrJoho) - 1, 5)).Value = arrToData’配列の行数と列数を合わせたセル範囲へは一括で代入可能。\r\n    End With\r\n    "]
[244,"構文","変数のデータ型変換","CLng(day)'Long型へ変換\r\nCStr(day)'String型へ変換\r\nCDate(num)'Date型へ変換"]
[245,"構文","待機（数秒マクロを止める）","Private Declare Sub Sleep Lib \"kernel32\" (ByVal ms As Long)’これは32BITバージョン。これをモジュールの一番上に記述\r\n\r\nSleep 3000'3秒まつという意味（つまり1000で１秒）。このコードはプロシージャ（マクロ）内に記述"]
[246,"構文","マクロパーツ化（Function）","基本的にマクロをパーツ化するために行う。\r\nSub パーツ化()\r\n　  Dim total As Long\r\n    total =  keisan(num1,num2)'引数としてnum1とnum2をfunctionに渡しながら呼び出して、戻ってきた値をtotal変数に代入するコード\r\n    Call message(total)\r\nEnd Sub\r\n\r\nPrivate Function keisan(Byval num1As Long, Byval num2 As Long) As Long'引数受け取る変数は(Byval〇Asデータ型)とする。\r\n　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　'最後のAs Longは戻り値の型設定\r\n    keisan = num1 + num2'最後戻り値を返す場合は『Functionプロシージャ名（ここではkeisan）=戻したい値』と記述する\r\nEnd Function\r\n\r\nSub message(Byval total As  Long) '戻り値がない場合はSubプロシージャでOK。戻り値がないのでカッコの後の『As データ型』も不要\r\n    Msgbox total\r\nEnd Sub"]
[247,"構文","VBAでJIS関数（ワークシート関数）","Application.worksheetFunction.Dbcs(123456）'これで全角表示になる"]
[248,"構文","CSV読み込み","    Dim myFSO As New FileSystemObject, myTextFile As TextStream　’まずは参照設定でMicrosoft Scripting Runtimeにチェックを入れる。\r\n    Dim mySalesData As Variant, i As Integer\r\n    Set myTextFile = myFSO.OpenTextFile(\"Ｃ:\\●一時保存●※タイトル変更禁止\\データ.csv\", ForReading)\r\n    i = 3\r\n    With myTextFile\r\n        .SkipLine\r\n        Do Until .AtEndOfStream = True\r\n            mySalesData = Split(.ReadLine, \",\")\r\n            Cells(i, 1).Value = mySalesData(33)\r\n            Cells(i, 2).Value = mySalesData(34)\r\n            Cells(i, 3).Value = mySalesData(36)\r\n            i = i + 1\r\n        Loop\r\n        .Close\r\n    End With"]
[249,"構文","CSV書き込み","    Do Until i = .Cells(Rows.Count, 3).End(xlUp).Row\r\n        myStockData(0) = .Cells(i, 1).Value\r\n        myStockData(1) = .Cells(i, 2).Value\r\n        myStockData(2) = .Cells(i, 3).Value\r\n        myStockData(3) = .Cells(i, 4).Value\r\n        myStockData(4) = .Cells(i, 5).Value\r\n        myTextFile.WriteLine Text:=Join(myStockData, \",\") 'csvファイル.WriteLine Text:=〇〇で一行ずつ書き込まれる。自動で次の行へ\r\n         i = i + 1\r\n    Loop"]
[250,"構文","Emptyかどうか","    if ＩｓEmpty(hairetsu) = true then\r\n        msgbox \"Ｅｍｐｔｙです\"\r\n    endif "]
[251,"構文","千円未満切り上げ","Application.WorksheetFunction.RoundUp(Cells(name.Offset(12, 0).Row, 4).Value, -3)"]
[252,"構文","千円未満切捨て","Application.WorksheetFunction.RoundDown(Cells(name.Offset(12, 0).Row, 4).Value, -3)"]
[253,"構文","月末指定","taishoTsuki = DateSerial(2022, 10, 1)'2022年10月1日\r\n getsumatsu = DateSerial(2022,11, 0)’2022年10月31日※最後に0を指定すると前月の末日になる。"]
[254,"構文","Dictionary（連想配列）","Sub 辞書()\r\n    '国語→70、数学→90、英語→80\r\n    'を連想配列へ代入しすべてのキーと値を表示してみよう！\r\n    Dim myDic As Object\r\n    Set myDic = CreateObject(\"Scripting.Dictionary\")\r\n    With myDic\r\n        .Add \"国語\", 70\r\n        .Add \"数学\", 90\r\n        .Add \"英語\", 80\r\n'        If .Exists(\"英語\") = True Then\r\n'            .Remove \"英語\"'これで英語を削除できる\r\n'        End If\r\n'        .RemoveAll\r\n        Dim myKey As Variant\r\n        Dim subjects As String\r\n        For Each myKey In myDic\r\n            subjects = subjects & myKey & \":\" & .Item(myKey) & vbCrLf\r\n        Next myKey\r\n    End With\r\n    \r\n    MsgBox subjects\r\n    \r\nEnd Sub"]
[255,"その他","クリップボードに文字列を保存","　　'クリップボードに文字列を格納\r\n    With CreateObject(\"Forms.TextBox.1\")\r\n        .MultiLine = True\r\n        .Text = \"ここに保存したい文字列を指定\"\r\n        .SelStart = 0\r\n        .SelLength = .TextLength\r\n        .Copy\r\n    End With"]
[256,"その他","UWSCコメントアウト","//基本的にはスラッシュ×2でコメントアウト\nTEXTBLOCK\nあとテキストブロックで囲まれたこの文章もコメントアウトされる。\n複数行ならこれを使う。\nENDTEXTBLOCK"]
[257,"その他","UWSCへ引数と起動","Sub 引数渡してファイル起動()\n    Dim path As String\n    path = ThisWorkbook.path & \"\\ＵＷＳＣ\\UWSC.exe\"'まずはUWSCの場所を指定\n    Dim file As String\n    file = ThisWorkbook.path & \"\\ＵＷＳＣ\\入力フォーム.UWS\"’次にUWSCのファイルを指定\n    Dim ret As Variant\n　　’次にエクセルから情報を引数配列としてUWSCに引き渡す\n    ret = Shell(path & \" \" & file & \" \" & Range(\"A3\").Value & \" \" & Range(\"A6\").Value, vbNormalFocus)\nEnd Sub\n"]
[258,"その他","ウィンドウIDを求める","GETID(\"ウィンドウ名\")//ちなみにウィンドウ名は一部でOK"]
[259,"その他","UWSC文字送信","//ウインドウIDをまずは指定する。\nId = GETID(\"ウィンドウ名\")\n//文字送信する。\nSENDSTR(Id,”送信文字\")"]
[260,"その他","UWSC文字送信（IDなし）","//ウインドウIDを指定せずに文字列を送信するには一度クリップボードへ送る必要がある。\nSENDSTR(0,”送信文字\")'IDに0をしていすることでクリップボードへ送信できる。\n//あとはペースト\nKBD(VK_CTRL,DOWN,10)\nKBD(VK_V,CLICK,10)\nKBD(VK_CTRL,UP,0)"]
[261,"その他","UWSC文字入力作業","//引き渡された配列からUWSCで入力する作業\n//まずはIDを指定。これは入力先ページのタイトルの一部をGETIDに入れるといい。\nid = GETID(\"ウィンドウ名\")\n//'これは0だが、1番目のエクセルから受け取ったデータの入力という意味。\nSENDSTR(id,PARAM_STR[0])"]
[262,"その他","UWSC引数確認","msgbox(PARAM_STR[0])"]
[263,"その他","UWSCでの改行","MsgBox (\"情報が入力されました。<#CR> \"住所等に誤りがないか確認してください。\")"]
[264,"その他","UWSCでの改行②","MsgBox (hennsuu + \"<#CR> \"+ hennsuu2)"]
[265,"その他","UWSC停止コマンド","//これを最初に書く\nsethotkey(VK_ESC,0,\"ForceStop\")\n//これを最後に書く\nprocedure ForceStop()\n    exitexit\nfend"]
[266,"その他","UWSCからUWSC実行","CALL 〇〇〇.UWS"]
[267,"その他","UWSCからUWSC実行②"," //コンマ区切りで引数を指定することも可能。受け取り側はPARAM_STR[0]とかでOK。\nCALL 〇〇〇.UWS（\"A\",\"B\")"]
[268,"その他","UWSCからVBA起動","ExcelObj=GETACTIVEOLEOBJ(\"Excel.application\")\nExcelObj.Run(\"UWSC起動\")\n"]
[269,"その他","UWSC選択外す","KBD(VK_CTRL,DOWN)\nKBD(VK_TAB)\nKBD(VK_CTRL,UP)"]
[270,"その他","UWSC画面出す","title = GETID(\"ウィンドウ名\")\n\nCTRLWIN(title,NORMAL)"]
[271,"その他","UWSC開くまで待つ","IE = CREATEOLEOBJ(\"InternetExplorer.Application\")//既に開いているページの更新ならこれ\nIE = GETACTIVEOLEOBJ(\"InternetExplorer.Application\",\"ページのタイトル\")//既に開いているページの更新ならこれ\nREPEAT\n sleep(0.1)\nUNTIL !IE.busy and IE.readystate =4 //『!』を頭につけることで否定系になる。また、IE.readystate=4はそのまま覚える。"]
[272,"その他","UWSC吹き出し","FOR N = 5 to 1 STEP-1\n \n FUKIDASI(N,500,400,0,100)　//（文字列、X、Y、くちばしの向き、フォントの大きさ）\n SLEEP(1)\nNEXT"]
[273,"その他","UWSC選択ボックス","kekka = SLCTBOX(SLCT_BTN,0,\"選択してください\",\"一番目\",\"二番目\",\"三番目\")\n\nSELECT kekka \n CASE SLCT_1\n  msgbox(\"一番が選択されました\")\n CASE SLCT_2\n  msgbox(\"二番が選択されました\")\n CASE SLCT_3\n  msgbox(\"三番が選択されました\")\nSELEND\n\n"]
[274,"その他","UWSC　IE戻る","IE.Goback"]
[275,"その他","UWSCフレームへ移動","title = \"ウィンドウ名\"\nIE = GETACTIVEOLEOBJ(\"InternetExplorer.Application\",title)\nIE.Visible = true\n//待機\nREPEAT　\n sleep(0.1)\nUNTIL !IE.busy and IE.readystate =4 //『!』を頭につけることで否定系になる。\nsleep(0.2)\n//まずは変数docにフレームを入れる。つまりフレームの中へ入る。\ndoc = IE.Document.frames(\"leftFrame\").Document\n//そのフレームの中のタグの中のIDを指定する。ちなみにIDは一つだけだからやりやすい。\nobj = doc.getElementById(\"modoru\")\n//そのIDのリンクをクリックする。\nobj.click\n//print doc.title"]
[276,"その他","UWSC繰り返し","FOR I = 1 To 10\n    　　処理\nNEXT"]
[277,"その他","UWSC繰り返し(～間）","WHILE 条件\n　　　　処理\nWEND"]
[278,"その他","UWSC繰り返し(～まで）","REPEAT\n     Sleep(0.1)　　//下記の条件を満たすまで待機\nUNTIL CHKIMG(\"画像/予告.bmp\")  //もし予告という画像がみつかったらループを抜ける"]
[279,"その他","UWSC画像あるか","IFB CHKIMG(\"フォルダ/画像名.BMP\")\n     MSGBOX(\"画像ありました\")\nENDIF"]
[280,"その他","UWSCクリップボード条件分岐","//まずは何か文字をコピー\nKBD(VK_CTRL,DOWN,10)\nKBD(VK_C,CLICK,10)\nKBD(VK_CTRL,UP,0)\n\n//次にクリップボードの値を変数COPYSTRへ代入\nCOPYSTR = GETSTR(0)\n\n\n\t\n//クリップボードの値によって処理を変える。\n//もし『文字１』という文字が含まれているなら実行。\nIFB POS(\"文字１\", COPYSTR) > 0 THEN\n\tMSGBOX(\"一つ目の処理\")\t\t\n\n//もし『文字１』という文字が含まれているなら実行。\t\t\nELSEIF POS(\"文字２\", COPYSTR) > 0 THEN\n\tMSGBOX(\"二つ目の処理\")\t\t\n\n//それ以外なら実行\t\t\nELSE \n\tMSGBOX(\"三つ目の処理\")\t\t\t\t\n\nENDIF"]
[281,"その他","キーボード入力","SendKeys \"{ENTER}\"'エンター押す動作を再現する。"]
[282,"その他","一部リンクエラー処理","『ブック内の一部リンクはすぐに更新できません。』のエラーが出た場合の処理。Escで止める。\r\nSub リンクなし処理()\r\n    Debug.Print \"処理開始\"\r\n    Dim rng As Range\r\n        On Error Resume Next\r\n        For Each rng In Cells.SpecialCells(xlCellTypeAllValidation)\r\n            With rng\r\n                If .Validation.Type = xlValidateList Then\r\n                    'データの入力規則が入っているセル（他ブック参照）をイミディエイトウィンドウに書き出す。\r\n                    Debug.Print _\r\n                    .Address(False, False) & vbTab & _\r\n                    .Validation.Formula1\r\n                    \r\n                    Columns(rng.Column).Delete '例えば、該当するセルを列ごと削除するとかしてリンクエラーのセルごと消し去る。\r\n                End If\r\n            End With\r\n        Next\r\n                    \r\n                    \r\nEnd Sub"]
[283,"その他","NumLock解除","   'numlock解除\r\n   Dim WshShell\r\n   Set WshShell = CreateObject(\"WScript.Shell\")\r\n   WshShell.SendKeys \"{NUMLOCK}\"\r\n   Set WshShell = Nothing"]
[284,"その他","数値へ変換（エクセル関数）","数式：ＶＡＬＵＥ関数について　※ＶＢＡではない\n＝ＶＡＬＵＥ（文字列）\n"]
[285,"その他","かつ（エクセル関数）","AND(B<10,B>2)"]
[286,"その他","または（エクセル関数）","OR(B=1,B=3)"]
[287,"その他","条件分岐（ユーザー定義）","[条件]表示形式\n[<=43638]m/d"]
[288,"その他","ワークシート関数を使う","Application.worksheetfunction.〇〇〇"]
[289,"その他","一時的に他プリンター選択","  'プリンターを一時的に他プリンターに設定する。\r\n    Dim myPrinterName As String\r\n    myPrinterName = Application.ActivePrinter’まずは今のプリンター名を変数に入れておく。\r\n    Application.ActivePrinter = \"NEC MultiImpact 700JE on Ne03:\"’一時的に使用したいプリンター名　※イミディエイトウィンドウで?ActivePrinterで調べられる。\r\n    Sheets(\"受入票\").PrintOut\r\n    Application.ActivePrinter = myPrinterName’元のプリンターに戻す。"]
[290,"その他","実行時間計測","    Dim startTime As Double\r\n    Dim endTime As Double\r\n    Dim processTime As Double \r\n    startTime = Timer\r\n    endTime = Timer\r\n    processTime = endTime - startTime"]
[291,"その他","画面更新を止める","    Application.ScreenUpdating=false 'これで画面の見た目更新を止める\r\n　　　　’ここに処理\r\n    Application.ScreenUpdating=true '処理終わった最後に画面更新をオン"]
[292,"その他","５分後にマクロ実行","Application.ontime EarlestTime:=Now + timeValue(\"00:05:00\"),Procedure:=\"マクロ名\",LatestTime:=何分待つか（省略可能),Schedule:=true/False'有効無効"]
[293,"その他","ワードをPDF保存","    'ワードをPDF保存\t\r\n    wddoc.ExportAsFixedFormat _\r\n    OutputFileName:=ThisWorkbook.path & \"\"\\\"\" & ”ファイル名\"\" & \"\".pdf\"\", _\r\n    ExportFormat:=wdExportFormatPDF\"\r\n"]
[294,"その他","デスクトップのパス","    Dim wsh As Variant\r\n    Set wsh = CreateObject(\"WScript.Shell\")\r\n    Path = wsh.SpecialFolders(\"Desktop\")"]

{"sheet":"操作手順","index":1,"n_rows":0,"n_cols":0,"rows_kept":0,"cut":false,"hidden":false,"merged":[]}

{"sheet":"カテゴリー名","index":2,"n_rows":11,"n_cols":1,"rows_kept":11,"cut":false,"hidden":false,"merged":[]}
["カテゴリー"]
["セル操作"]
["シート操作"]
["ブック操作"]
["ファイル・フォルダ操作"]
["Outlook操作"]
["ユーザーフォーム操作"]
["ブラウザ操作"]
["図形・グラフ操作"]
["構文"]
["その他"]