アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCELで作った巨大な表があり
アウトラインを使って折りたたんでいます
この特定箇所を
アウトラインを開いた形で
瞬時に表示したいのですが、
どんなやり方がありますか。
何かキーワードがあればこちらでも調べます

(VBA初心者)

A 回答 (2件)

こんにちは。


例えば、
1)InputBoxメソッドで検索値を入力する。
2)Findメソッドで検索結果セルを取得する。
3)結果セル行(または列)のOutlineLevelを調べて
 詳細データであればShowDetailプロパティをTrueにする。
4)OutlineLevelが深ければ下の行を見にいって表示されるまでLoopする。
という流れのサンプルです。

(『特定箇所』がアドレス指定でも良かったり、
 シート全体のOutlineを開いても良かったりするならもっと簡単になります)

Sub sample()
  Dim ret As Variant '検索値
  Dim r  As Range  '検索結果
  Dim i  As Long  'OutlineLevelが深い場合のLoop用
  
  ret = Application.InputBox("what?", Type:=2)
  If VarType(ret) = vbBoolean Then Exit Sub 'キャンセル時
  On Error Resume Next
  Set r = Cells.Find(What:=ret, _
            LookIn:=xlFormulas, _
            LookAt:=xlPart)
  On Error GoTo 0
  If r Is Nothing Then
    MsgBox "no data"
  Else
    If r.EntireRow.OutlineLevel > 1 Then
      r.EntireRow.ShowDetail = True
      While r.EntireRow.Hidden
        r.Offset(i).EntireRow.ShowDetail = True
        i = i + 1
      Wend
    End If
    Application.Goto r
    Set r = Nothing
  End If
End Sub

キーワード...というか、わからない語句があればヘルプで調べてみてください。
Findメソッドを使うのであれば、引数についても理解する必要があります。
上記例では関数の結果である[値]を検索するようにはなっていません。
その場合は引数LookInの修正が必要です。
(マクロの自動記録も理解の助けになると思います)

また、上記は行方向のOutlineの例です。列の場合は
r.EntireColumn...となります。
    • good
    • 0

アウトラインを開いた形であれば


以下の方法でいいかと思います。
特定箇所については、実データを元に
検索条件を分析調査し決定するだけです。

ExcelファイルのSQLを使ったアクセス(DAO)
http://www.geocities.co.jp/SiliconValley/4805/vb …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!