Excel VBAで非表示列のセルの情報を検索し取得する

はじめに

Excelで資料作成するときに、VBAを利用した資料を作成することが多々あります。
資料の中では「非表示」にする行や列も多いと思います。

そこで、今回は非表示列の情報も検索し情報を取得する方法をメモしておきます。
基本、非表示列を検索しようとしても「Nothing」状態で取得はできません。

 

一度表示状態にした後に非表示にする

非表示にした状態だと、どうしても情報を取得できませんでした
そのため、一度、表示した状態にした後に、元の非表示状態にするサンプルを用意しました

 

要件

  1. B列が非表示状態である。
  2. B列に定義した値に一致した隣のセルの値を取得する

 

サンプル

Private Sub CommandButtom1_Click()

    '一度、B列を表示状態にする
    If Columns("B").Hidden = True Then
        Columns("B").Hidden = False
    End If

' 値を取得する
    Cell GetObject("value")

    ' B列を非表示状態にする
    If Columns("B").Hidden = False Then
        Columns("B").Hidden = True
    End If

End Sub

Private Sub GetObject(ByVal value As String)
    Dim rng As Range

    ' B列の「value」値を検索する
    Set rng Range("B:B").Find(What:=value)
    If rag Is Nothing Then
        Debug.Print "Data is Nothing"
    Else
        ' B列で「value」に設定された値の隣の値を取得する
        Debug.Print rng.Offset(0, 3).value
    End If
End Sub

一度、非表示列を表示状態にした後で、処理を行います。
全ての処理が終わったら、表示列を非表示にします。

 

最後に

Find関数は非表示列に対しては検索できないというのが難点ですね。
今回のサンプルでは、値の空判定等は行っていません。
Find関数の他にも、VLookup関数はIndexを用いたMatch関数などがありますが、
個人的には、Find関数が楽でした。

機会があれば、他の関数についても発信したいと思います。

タイトルとURLをコピーしました