2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel マクロ・VBA 困ったとき用(更新ver2.1)

Last updated at Posted at 2024-10-31

履歴

実施したことを残していく
業務で困った際の参考にできることも理想とする

  • 20241031(更新ver1.0):値の検索までを投稿
  • 20241117(更新ver1.1):Outlookメール抽出マクロ(未完成)の追加
  • 20250609(更新ver2.0):使用頻度の高いコード早見へ変更
  • 20250701(更新ver2.1):一旦追記(そろそろまとめよ)

変数の型

  • 文字列型:As String
  • 整数型:As Long
  • 論理型:As Boolean
  • 日付型:''As date''

検証したいとき

  • MsgBox 変数
  • Debug.Print 変数

合致

  • 部分合致(「*」がついている方は何でもOK)
If Cells(1, 1) Like "*東京都*" Then

    MsgBox "部分合致した!"

End If
  • 完全合致
If Cells(1, 1) = "東京都" Then

    MsgBox "完全合致した!"

End If

ブックやシート、セルのコントロール

  • 最終行の取得
    2は何列目かを指定
Dim lastRow As Long

    lastRow = Cells(Rows.Count, 2).End(xlUp).Row
  • 最終列を取得
    2は何行目かを指定
Dim lastColumn As Long

    lastColumn = Cells(2, Columns.Count).End(xlToLeft).Column
  • Do untilを使って多少のレイアウトの変更があっても対応できるようにする
    4には何列目かを指定、その列の「テスト」が何行目にあるのかをkitenに格納する。
    kiten +1 とすれば「テスト」の下からのセルを認識できる。
Dim kiten As Long
kiten = 1

    Do Until Cells(kiten, 4).Value = "テスト"
        kiten = kiten + 1
    Loop
    MsgBox kiten
  • 開いているブックをアクティブに
Dim i As Long

    For i = 1 To Workbooks.Count

        If Workbooks(i).Name Like "*ブックのキーワード*" Then
    
        Workbooks(i).Activate
        
        End If

    Next i
  • セルをアクティブに
Range("A1").Activate
  • シートをアクティブに
Sheets("シート名").Activate
  • アクティブセルを起点に、アクティブセルの1つ下や右のセルとかを参照
ActiveCell.Offset(1, 0).Activate 'これなら1行下へ
ActiveCell.Offset(-1, 0).Activate 'これなら1行上へ
  • 連続したセルに同じ処理を行う(かなり使うと思う)
    例:D4からD11セルまで「テスト」が入力される
Dim i As Long
 
 For i = 4 To 11
 
    Range("D" & i).Value = "テスト" 
 
 Next i
  • セルの値が空白でなければ
    If Range("A1").Value <> "" Then
    
        MsgBox "空白じゃない"

    End If
  • セルのコピペ
Range("A1").Copy Range("C1")
  • 別のシートへ範囲コピペ
    Range("A1:D11").Select
    Selection.Copy
    Sheets("別シート").Range("A1").PasteSpecial
  • フィルタリングの解除
    If Sheets("Sheet1").FilterMode Then
        Sheets("Sheet1").ShowAllData
    End If
  • フィルタリング(必ず事前にフィルタリングの解除を行うこと)
     - fieldは列数
     - テストは絞りたいワード
Sheets("Sheet1").Range("$A$1:$D$11").AutoFilter field:=2, Criteria1:="テスト"
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?