[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『下のVBAの説明していただけませんか』(VBAしりたい)
Sub 非表示()
'
' Macro1 Macro
' マクロ記録日 : 2003/7/1 ユーザー名 : A.
'
Dim a Dim DataCnt Dim SHEETNAME ' Application.ScreenUpdating = False Application.DisplayAlerts = False
SHEETNAME = Sheets(1).Name
a = 5
Do While Sheets(SHEETNAME).Cells(a, "B").Value <> "" a = a + 1 Loop
DataCnt = a - 1
a = 5
Do While DataCnt + 1 > a If Cells(a, "C").Value = 0 And Cells(a, "D").Value = 0 Then Rows(a).Select Selection.EntireRow.Hidden = True End If a = a + 1 Loop
End Sub
Sub 表示()
'
' Macro1 Macro
' マクロ記録日 : 2003/7/1 ユーザー名 : A.
'
Dim a Dim DataCnt Dim SHEETNAME ' Application.ScreenUpdating = False Application.DisplayAlerts = False
SHEETNAME = Sheets(1).Name
a = 5
Do While Sheets(SHEETNAME).Cells(a, "B").Value <> "" a = a + 1 Loop
DataCnt = a - 1
a = 5
Do While DataCnt + 1 > a If Cells(a, "C").Value = 0 And Cells(a, "D").Value = 0 Then Rows(a).Select Selection.EntireRow.Hidden = False End If a = a + 1 Loop
End Sub
【共通部分】 変数宣言。Variant型 Dim a Dim DataCnt Dim SHEETNAME
マクロ実行中画面を更新しない Application.ScreenUpdating = False
マクロ実行中のメッセージダイアログ表示を抑制 Application.DisplayAlerts = False
変数SHEETNAMEにシート番号1の名前を格納 SHEETNAME = Sheets(1).Name
変数aに 5 を格納 a = 5
SHEETNAMEシートのセル B5 以降が空白でない間は 変数 a に +1 Do While Sheets(SHEETNAME).Cells(a, "B").Value <> "" a = a + 1 Loop
変数DataCntに a - 1 を格納 DataCnt = a - 1
【非表示】 変数aに 5 を格納 a = 5
変数DataCnt+ 1 が 変数a より大きい間はDo Loop間を実行 Do Loop間=C列D列の5行目以降がともに「0(または空白?)」の時は その列を非表示に(行番号は変数a にてカウント) Do While DataCnt + 1 > a If Cells(a, "C").Value = 0 And Cells(a, "D").Value = 0 Then Rows(a).Select Selection.EntireRow.Hidden = True End If a = a + 1 Loop
【表示】 変数aに 5 を格納 a = 5
変数DataCnt+ 1 が 変数a より大きい間はDo Loop間を実行 Do Loop間=C列D列の5行目以降がともに「0(または空白?)」の時は 該当行の非表示を解除 (行番号は変数a にてカウント) Do While DataCnt + 1 > a If Cells(a, "C").Value = 0 And Cells(a, "D").Value = 0 Then Rows(a).Select Selection.EntireRow.Hidden = False End If a = a + 1 Loop
「シートは一番左端である」 「何らかのデータが5行目以降に入力されている」 「B列で最大データ数を求めることができる」
上記の条件を満たすシートで処理をする行数を求め、
「アクティブなシートのC5:Dnの範囲でデータが入力されている」シートで 「アクティブなシートのC列 D列の5行目以下のデータがともに 0(または空白)の行の表示/非表示を切り替える」
のを意図したマクロであると分析しますが、 最初の Do〜Loop ではシートを明記しているのに あとの方の Do〜Loop ではシートが明記されていません。 シートが複数あるブックで左端ではないシートがアクティブの状態で このマクロを実行した場合はアクティブなシートのほうに表示/非表示の 動作がかかるのでそれを意図しているかどうかは不明です。 (KAMIYA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.