PCメモ

Excelを中心とした業務改善の記録

引数の渡し方(ByRef・ByVal)

引数の渡し方には「参照渡し」と「値渡し」がある。 指定しない場合は「参照渡し」になる。 参照渡し(ByRef) 値渡し(ByVal)

VBA用語集(オブジェクト・関数・ステートメントなどの読み方)

VBA用語集|VBAエキスパート公式サイト

はてなブログ活用法(作表・動画)

作表方法 HTMLで作表 www.snow0303.com はてな記法で作表 you-key69.hatenadiary.jp 動画埋め込み d.hatena.ne.jp

並べ替え(SortオブジェクトSortメソッド)

並べ替え Excel2007以降の並べ替え Excel2003までの並べ替え Sortオブジェクトのメンバー SortOn ~並べ替えのタイプ~ Order ~並べ替えの順番~ DataOption ~数値と文字が混在~ Header ~タイトル行かどうか~ 並べ替え Excel2007以降の並べ替え Sortオブジェク…

複数条件でフィルターをかける(AutoFilter 配列)

AutoFilterメソッド セル.AutoFilter Field, Criteria1, Operator, Criteria2 Criteriaで条件指定できるのは2つまで。3つ以上条件指定する場合は、引数Criteria1を配列形式で指定する。 条件2つ With Range("A1") .AutoFilter field:=1, Criteria1:="*B*", _…

フォルダ作成(MkDirステートメント)

MkDir 作成するフォルダー名 Mk:Make Dir:Directory デスクトップに20210415という名前のフォルダが作成される。 Sub フォルダ作成() MkDir "C:\Users\sr950\OneDrive\デスクトップ\20210415" End Sub

Faxデータ削除(再帰処理)

フォルダ内のFaxデータをまとめて削除する。条件は更新日が二週間前。 Faxフォルダの中にデータが入っているがフォルダの数に規則性はない。 Faxフォルダ 20210411 Aさん PDFデータ PDFデータ PDFデータ 再帰処理を行い、フォルダ内すべてのデータに対して処…

重複削除マクロ

重複を削除する。 Sub 重複を削除() Dim LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row Dim i As Long Dim a As Long Dim c As Long '重複している数のカウント用 For i = 2 To LastRow c = 0 '重複があるか調べる For a = 2 To LastRow If…

オブジェクト・コレクション・メンバ

オブジェクト オブジェクトとは、VBAで何か操作する時の対象となるもののことです。 名 オブジェクト名 ブック Workbook ワークシート WorkSheet セル Range オブジェクト式①対象.様子=値②対象.命令 オプション:=値 佐藤君という小学生を例に説明していきま…

VBA100本ノック 2本目:セルのコピー (書式指定)

出題内容 「Sheet1」のA1:C5のセル範囲を、「Sheet2」のA1:C5にコピーしてください。数式は消して値でコピー、書式もコピーしてください。※書式は「セルの書式設定」で設定可能なもの(ロックは除く)。入力規則やメモ(旧コメント)は書式ではありません。…

検索結果を削除(Findメソッド)

セルを検索し行を削除する。 Sub wrk() Dim a As Range Set a = Range("A:A").Find(what:="佐藤") If a Is Nothing Then MsgBox "見つかりません" Else a.EntireRow.Delete End IfEnd Sub 対象セルだけを削除したい場合。 Sub wrk() Dim a As Range Set a = …

ブックを閉じる(Closeメソッド)

ブックを閉じる Sub 閉じる() ActiveWorkbook.Close End Sub 編集が保存されていない場合、確認メッセージが表示される。 Closeメソッドの引数SaveChangesを使うと保存するかどうか指定できる。保存する:True保存しない:False Sub 閉じる() '保存して閉じ…

PageSetupオブジェクト(印刷設定)

PageSetupオブジェクトについて 印刷範囲設定(PrintArea) PageSetupオブジェクトについて PageSetupオブジェクトのプロパティを変更することで印刷設定を行うことができる。 With Worksheets("Sheet1").PageSetup. '横向き印刷 .Orientation = xlLandscape…

「できる経理マン」と「ダメ経理マン」の習慣

経理で仕事をしていると、色んなタイプの経理マンに出会います。1円単位で差額を気にする人、無駄な経費を削減しろと言い続けている人、仕事をすぐ他人にお願いしている人。 タイプは様々ですが、仕事ができる経理マンには共通した習慣があります。 経理マン…

ファイル保存先規定の場所

ファイルを保存する時に、ファイル名のみ指定し保存場所を指定しなかった場合規定の場所にファイルが保存される。 ActiveWorkbook.SaveAs Filename:="test2.xlsx", FileFormat:=xlWorkbookDefault 既定の場所変更方法 ファイル→オブション→保存→ブックの保存…

VBA100本ノック1本目:セルのコピー

出題内容 「Sheet1」のA1:C5のセル範囲を、「Sheet2」のA1:C5にコピーしてください。 値も数式も書式も全てコピーしてください。 ただしSelectメソッドは使用禁止 ※行高と列幅の設定はしなくて良い。 excel-ubara.com 回答 Sub vba001() Sheets("Sheet1").Ra…

VBA3要素(オブジェクト操作・制御構文・関数)

VBAには大きく3つの要素がある。 ①オブジェクトに対する操作②制御構文③関数 Sub wrk() Dim LastRow As Long Dim i As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row '制御構文(繰り返し) For i = 2 To LastRow '制御構文(分岐) 関数 If Cells(i, …

最終行と最終列の組み合わせ

最終列と最終行を組み合わせて全てのセルに対して処理を行う。 Sub wrk() Dim i As Long Dim j As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Cells(i, j).Interior.ColorIndex = 6 …

VBAでOutlookメールを送付

ExcelVBAを使用してOutlookメールを作成し送付する。 準備 Outlookを操作する為の参照設定。 VBE→ツール→参照設定→Microsoft Outlook 16.0 Object Libraryにチェック。16.0はバージョンによって変わる。 コード Sub SendMail1() '--- Outlook操作のオブジェ…

インプットボックスフィルター

Sub delete() Dim wrk As String wrk = InputBox("文字列を入力してください") With Range("A1") .AutoFilter .AutoFilter field:=1, Criteria1:=wrk .CurrentRegion.Offset(1, 0).EntireRow.delete .AutoFilter End With End Sub InputBoxに入力された文字…

工場PL説明資料

この記事の目的 生産PLとは 製品を1つだけ生産するとどうなる 費用とは 製造以外の生産活動はどこへ 製品による違い 生産利益を増やすために お金を使う時に考えること まとめ この記事の目的 1人1人が生産利益を増やす方法を考えることができるようになる。…

工場の損益管理

PLとは 損益計算書の英語表記。(Profit and Loss Statement) 一定期間にどれだけ儲けたのかを表す財務諸表の1つ。 財務諸表:貸借対照表・損益計算書・キャッシュフロー計算など。 収益-費用=利益(損失) 勘定式のPL。 工場ではどんなの こんなの使って…

シートを同じ階層に保存

元データと同じ階層にブック内のシートを保存する。 Sub 同じ階層に保存() 'マクロブックのパス Dim Path As String Path = ThisWorkbook.Path 'シートを新規ブックへコピー Sheets(1).Copy '同じ階層に保存 On Error Resume Next ActiveWorkbook.SaveAs Fil…

チェックした行の削除

D列に×を入力した行を削除する。 '最終行の取得 Dim LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row Dim i As Long For i = LastRow To 2 Step -1 '×と書かれているかどうか If Range("D" & i).Value = "×" Then Rows(i).Delete End If Next…

キーワードでデータを抽出

Dim LastRow As Long Dim r As Integer 'クリア Sheets("まとめ").Range("A5").CurrentRegion.Offset(1, 0).ClearContents 'まとめシートのタイトル行を取得する r = Sheets("まとめ").Range("B5").Row 'まとめシートへデータを書き写す LastRow = Worksheet…

MsgBox 分岐

MsgBoxを使ってその後の処理を分岐させる Dim ans As Integer ans = MsgBox("処理を行いますか?", vbYesNo + vbQuestion, "動作確認") If ans = vbYes Then MsgBox "開始します" Else MsgBox "中断します" End If buttons の引数 定数 値 内容 vbYesNo 4 […

文字列内検索(InStrh)

InStr関数 ~文字列内で検索~ InStr関数 ~文字列内で検索~ 引数に指定した文字列の中で、「検索文字列」が存在する位置を数値で返す。 InStr(文字列,検索文字列) Midと組み合わせて使用することが多い。 Cells(1, 2) = Mid(Cells(1, 1), InStr(Cells(1,…

Copyメソッド

別の場所へコピー コピー元のセル.Copy Destination : = コピー先のセル Range("A1").Copy Destination : = Range("B1") ※Destination は省略可能。→ Range("A1").Copy Range("B1") 貼り付け方法の指定 Range("A1").Copy Range("B1").PasteSpecial Paste := …

複数セルの指定

複数セルの指定 Range(左上のセル,右上のセル) '① Range(Range("B2"), Range("B3")).Select '② Range(Cells(3, 3), Cells(4, 4)).Select '③ Range(Range("A2"), Range("A1").End(xlDown)).Select

ブックを開いて加工

Sub ブックを開いて加工() Dim openBook As Workbook Dim openPath As String '選択したブック名を格納 openPath = Application.GetOpenFilename("csv,*.csv") If openPath <> "False" Then '格納したブックを開く Set openBook = Workbooks.Open(openPath) …