TOP > カテゴリ > Excel >

その他の操作まとめ [ExcelのVBA]

セル内の文字列を検索する

Private Sub CommandButton1_Click()
  Dim obj As Range

  ' 「りんご」を検索
  Set obj = ActiveSheet.Cells.Find("りんご")

  If obj Is Nothing Then
    Debug.Print "文字列は見つかりません。"
  Else
    ' 見つかったセル情報
    Debug.Print "行数:" & obj.Row & _
                " 列数:" & obj.Column & _
                " A1形式:" & obj.Address( _
                    RowAbsolute:=False, _
                    ColumnAbsolute:=False)
  End If
End Sub

※Findの文字列にはワイルドカードが使用可能です。
※「RowAbsolute:=False」と「ColumnAbsolute:=False」は絶対参照の「$」マークを非表示にするという意味です。

[例]

[結果]

セル内の文字列を連続検索する

Private Sub CommandButton1_Click()
  Dim obj As Range
  Dim firstAddress  As String
    
  ' 「りんご」を検索
  Set obj = ActiveSheet.Cells.Find("りんご")
    
  ' 「りんご」が存在する場合
  If Not obj Is Nothing Then
    firstAddress = obj.Address
    Do
    
      ' 見つかったセル情報
      Debug.Print "行数:" & obj.Row & _
                  " 列数:" & obj.Column & _
                  " A1形式:" & obj.Address( _
                    RowAbsolute:=False, _
                    ColumnAbsolute:=False)
                    
      ' 次を検索する
      Set obj = Cells.FindNext(obj)

    Loop While (Not obj Is Nothing) And (obj.Address <> firstAddress)
  Else
    Debug.Print "文字列は見つかりません。"
  End If
End Sub

[例]

[結果]

セルにハイパーリンクを設定する

Private Sub CommandButton1_Click()
  Dim link As Hyperlink
  
  ' A1のセルにハイパーリンクを設定する
  Set link = ActiveSheet.Hyperlinks.Add( _
    Anchor:=Range("A1"), _
    TextToDisplay:="プチモンテ", _
    Address:="http://www.petitmonte.com/")
    
  ' ハイパーリンクの削除
  'link.Delete
  ' 全てのハイパーリンクの削除
  'ActiveSheet.Hyperlinks.Delete
End Sub

ブック、シートの個数を取得する

Private Sub CommandButton1_Click()
  ' ワークブックの個数
  Debug.Print Workbooks.Count
  ' (アクティブの)ワークシートの個数
  Debug.Print ActiveWorkbook.Worksheets.Count
End Sub

複数、全てのシートを選択する

Private Sub CommandButton1_Click()
  ' 全てのワークシートの選択
  Worksheets.Select
  
  ' 複数のワークシートの選択
  Worksheets(Array(1, 2, 3)).Select
  Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
End Sub

「ファイルを開く」ダイアログを表示する

Private Sub CommandButton1_Click()
  Dim filename As String
  
  ' ファイルを開くダイアログを表示する
  filename = Application.GetOpenFilename( _
    FileFilter:="Excelファイル,*.xls" & "," & _
                "マクロ有効ファイル,*.xlsm" & "," & _
                "全てのファイル,*.*")
    
  If filename <> "False" Then
    Range("A1").Value = filename
  Else
    Range("A1").Value = "キャンセル"
  End If
End Sub

[結果]

「名前を付けて保存」ダイアログを表示する

Private Sub CommandButton1_Click()
  Dim filename As String
  
  ' 名前を付けて保存ダイアログを表示する
  filename = Application.GetSaveAsFilename( _
    FileFilter:="Excelファイル,*.xls" & "," & _
                "マクロ有効ファイル,*.xlsm" & "," & _
                "全てのファイル,*.*")
    
  If filename <> "False" Then
    Range("A1").Value = filename
  Else
    Range("A1").Value = "キャンセル"
  End If
End Sub

[結果]

シートをズームする

Private Sub CommandButton1_Click()
  ' シート1をアクティブにする
  Sheet1.Activate
  ' アクティブウインドウのズームを200%にする
  ActiveWindow.Zoom = 200
End Sub

確認ダイアログを非表示にする

Private Sub CommandButton1_Click()
  ' 確認ダイアログを非表示にする
  Application.DisplayAlerts = False

  ... 確認ダイアログが表示される処理
 
  ' 確認ダイアログを表示する設定にする(デフォルトはTrue)
  Application.DisplayAlerts = True
End Sub

画面の描画を停止する

重い処理を実行する時などに使用します。

Private Sub CommandButton1_Click()
  ' 画面の描画を停止する
  Application.ScreenUpdating = False
  
  ... 重い処理

  ' 画面の描画を再開する (デフォルトはTrue)
  Application.ScreenUpdating = True
End Sub

※「シート.Visible = False」でシートを非表示にする方法もあります。

シート全体をクリアする

Private Sub CommandButton1_Click()
  ' シート全体をクリアする
  Worksheets("Sheet1").Cells.Clear
End Sub

VBAの固有操作

[セルの操作]
セルの値/計算式を設定する
セルのフォントを設定する
セルの背景色/網掛けを設定する
セルの文字配置を設定する
セルの表示形式を設定する
セルに罫線を設定する
セルの選択/コピー/貼り付け/切り取り/削除/クリア
セルの結合/結合の解除をする
セルにコメントを追加/削除する
シートの保護とセルのロック解除をする
セルの値をソートする

[テーブル/グラフ/ピボットテーブル]
テーブルの作成/操作
グラフの作成/操作
ピボットテーブルの作成/操作

[ワークシート]
シートの追加/移動/コピー/削除/表示/印刷
ワークシートのイベント

[ワークブック]
ブックを開く/追加/上書き/名前保存/PDFの作成
ワークブックのイベント

[その他]
その他の操作まとめ

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年07月23日 最終更新日:2015年07月26日
記事NO:01236