2010/05/16

VBAの画面描画を停止する方法

Sub NoDrawingSample()

With Application
    .ScreenUpdating = False             ' 画面描画を停止する '
    .Calculation = xlCalculationManual  ' 自動計算を停止する '
End With

' /// ここから '
' 処理を記述
' ここまで /// '

With Application
    .ScreenUpdating = True                  ' 画面描画の停止を解除する '
    .Calculation = xlCalculationAutomatic   ' 自動計算の停止を解除する '
End With

End Sub

2010/05/03

Excelのシートをまとめて再表示する

たぶん前の担当者が残したと思うんだけど、勤務先に使えるVBScriptファイルがあったのでメモ。

If WScript.Arguments.Count = 0 Then
    MsgBox "Excelの非表示シートをまとめて表示するVBScriptです。" & _
    vbCrLf & "ファイルをドロップして使用してください。", , "説明"
    WScript.Quit
End If

On Error Resume Next

For Each myFName In WScript.Arguments
    If LCase(Right(myFName, 3)) = "xls" Then
        Set myXLS = CreateObject("Excel.Application")
        myXLS.Visible = True
        Set myBK = myXLS.Workbooks.Open(myFName)
        For Each mySH In myBK.Sheets
            mySH.Visible = True
        Next
        Set myBK = Nothing
        Set myXLS = Nothing
    End If
Next

If Err.Number <> 0 Then
    MsgBox "ブックの保護を解除して試してください。", , "エラー"
End If

2010/05/02

VBAでシートの有無を確認する

任意のシートの有無によって処理を分けたい場合に使えるサンプルコードです。

' シートの有無を確認する (1) '
Sub ChkSheetSample1()

Dim xWsheet As Worksheet
Dim xFlag As Boolean

For Each xWsheet In Worksheets
    If xWsheet.Name = "確認したいシート名" Then xFlag = True
Next xWsheet

If xFlag = True Then
    ' 該当のシートがある場合の処理 '
    MsgBox "あり"
Else
    ' 該当のシートがない場合の処理 '
    MsgBox "なし"
End If

End Sub
' シートの有無を確認する (2) '
Sub ChkSheetSample2()

Dim xWsheet As Worksheet

On Error Resume Next
Set xWsheet = Worksheets("確認したいシート名")
On Error GoTo 0

If xWsheet Is Nothing Then
    ' 該当のシートがない場合の処理 '
    MsgBox "なし"
Else
    ' 該当のシートがある場合の処理 '
    MsgBox "あり"
End If

End Sub

2010/05/01

VBAでVLOOKUPを使う

前回はVLOOKUP関数についてでしたが、今回はVLOOKUP機能をVBAで使うサンプルを書きます。サンプルコードを実行すると、←のようにダイレクトにVLOOKUPの結果が挿入されます。


2010/04/30

VLOOKUPで#N/Aエラーを表示させない

VLOOKUP関数を使うと、縦型の表からデータを探すことができます。(横型の検索はHLOOKUP関数)
関数の書式は以下のとおりです。

= VLOOKUP(検索値,検索する範囲,列番号,検索の型)

画像は、A1~C8の表からデータを探す例です。E2セルに任意のIDを入れると、F2とG2セルに該当のデータが表示されるようになっています。

2010/04/29

Google Suggest の検索候補を取得する

Google の検索枠に文字を入力すると、↓のように検索キーワードの候補が表示されますが、これはGoogle サジェストという機能によって提供されています。

この機能は、Google Suggest API として一般に公開されているので手軽に利用できます。今回は、VBAでGoogle Suggest API のキーワード候補をA to Zで取得するループ文を組んでみます。

一旦、シート内のデータをクリアするので、作業中のブックでは実行しないように注意してください。


VBAで最終行、最終列を取得する

' 最終行の取得 '
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
' 最終列の取得 '
MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column

最終行(最終列)の取得には、大まかに以下の方法があります。

  • Endプロパティを使って、上(左)から下(右)に検索する方法
  • Endプロパティを使って、下(右)から上(左)に検索する方法
  • UsedRangeプロパティを使って、使用済みのセルの範囲を取得する方法

表の中にデータが抜けているセルがある場合は、UsedRangeプロパティで大枠の範囲を取得する方法がベターですが、個人的には、表の下(右)から上(左)に検索する方法しか使っていないです。

なお、最終行、最終列の取得については、以下のページにまとまっています。

なにぬねのーつ > No.8 ワークシートの最終行、最終列を取得する