[VBScript][VBA] セルの入力項目にエラーがあるかどうかをチェックする

メモです。

通常セルに入力されている値を取得する場合は

<なんちゃら>.Cells(row, col).Value

で取得できますが、セルの入力項目にエラーがある場合、上記のプログラムでアクセスするとエラーになってしまいます。

セルの内容がエラーであるかどうかは以下のようにして事前にチェックすることができます。


Set objExcel = CreateObject("Excel.Application")
Set objSheet = <なんちゃら>

If objExcel.WorksheetFunction.IsError(objSheet.Cells(row, col)) Then
  ' エラーがあった場合の処理
Else
  ' エラーがなかった場合の処理
End If

[VBScript][VBA] Excel で入力されている一番下の行位置と一番右の列位置を取得する

メモです。

行位置

ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

列位置

ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column

.NET Framework で Microsoft.Office.Interop.Excel を使う場合でも同様に取得できます。


Excel オブジェクトから結合されたセルの値を取得する

Excel で「A1」から「B2」の4セルが結合され値が設定されている場合に、Cells プロパティから4セルどこを指定しても値を取りたいと思うことがあると思いますが、実際に値の愛っているセルは結合されたセルの一番左上のセルのみであるため、ほかの位置を指定すると空の値が返ります。

【例】

A1:B2の結合セルに「10」が入力されていた場合

  • sheet.Cells(1, 1) ⇒ 10
  • sheet.Cells(1, 2) ⇒ “”
  • sheet.Cells(2, 1) ⇒ “”
  • sheet.Cells(2, 2) ⇒ “”

結合セルのどこを指定しても値を取得したい場合は「MergeArea」プロパティを使うと有効です。MergeArea.Cells の位置は必ず (1, 1)にして値が必ず存在するセルを指定します。

【例】

value = sheet.Cells(2, 2).MergeArea.Cells(1, 1).Value   ‘ = 10