[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『行ではなく列で行いたい』(1192)
VBAの色々な機能を調べていたら参照にしたいものがありました。
C1に開始の日付C2に終了の日付を指定することで、指定期間のみを表示させるVBAになります。
こちらは、行を非表示にしていますが、列にしたいと思っています。
単純にRowをColumnに変更してみましたができませんでした。
N列に4月1日、NN列に3月31日と入力されているExcelデータがあるので
期間を指定した際、N列〜NN列の期間外を非表示としたいです。
年末の忙しい中申し訳ございませんが詳しい方がいらっしゃいましたらアドバイスをお願い致します。
Sub DatePeriod()
Dim sRow As Long: sRow = 5
Dim eRow As Long: eRow = 1500
'全表示
Range(Rows(sRow), Rows(eRow)).Hidden = False
'非表示設定
If IsDate(Range("C1").Value) And IsDate(Range("C2").Value) Then
Dim mDate As Date: mDate = Cells(sRow, "C").Value
Dim mDate2 As Date: mDate2 = Cells(eRow, "C").Value
Dim sDate As Date: sDate = Range("C1").Value
Dim eDate As Date: eDate = Range("C2").Value
Dim memo As Long
'開始より前を非表示
If CLng(sDate) > CLng(mDate) Then
memo = CLng(sDate) - CLng(mDate) + sRow - 1
Range(Rows(sRow), Rows(memo)).Hidden = True
Cells(memo + 1, "C").Activate
End If
'終了より後を非表示
If CLng(mDate2) > CLng(eDate) Then
memo = CLng(eDate) - CLng(mDate) + sRow + 1
Range(Rows(memo), Rows(eRow)).Hidden = True
End If
End If
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
↓は、5〜1500行目を非表示にしています。
Sub 研究1()
Cells.EntireRow.Hidden = False
Rows("5:1500").Hidden = True
End Sub
そして、それは↓でも同じ結果になります。
Sub 研究2()
Cells.EntireRow.Hidden = False
Range("A5:B1500").EntireRow.Hidden = True
End Sub
なぜ同じになるのかというと
前者は、Rows("5:1500")を非表示にしなさい
後者は、Range("A5:B1500")が【含まれる行】を非表示にしなさい
という命令をしていて、結局5〜1500行目を操作しているからです。
なので、↓のどちらかになるようにしてみてはどうでしょうか?
Range(セル範囲の始まり,セル範囲の終わり).EntireRow.Hidden = True Rows(始まりの行番号 & ":" & 終わりの行番号).Hidden = True
(もこな2) 2021/12/28(火) 16:36
Sub Test()
Cells.EntireColumn.Hidden = False
Range(Cells(1, "N"), Cells(1, Range("C1") - Range("N1") + Range("N1").Column - 1)).EntireColumn.Hidden = True
End Sub
(ひまつぶし) 2021/12/28(火) 16:44
Sub 研究3()
Cells.EntireColumn.Hidden = False
Range("B1", "Z5").EntireColumn.Hidden = True
End Sub
(もこな2) 2021/12/28(火) 16:47
(ひまつぶし) 2021/12/28(火) 18:58
(チンチクリン) 2021/12/28(火) 19:56
こんばんは! 今年も残り僅かになりましたね。 ちょっとお掃除疲れしましたので書いてみましたよ。 あってますか???? 2行目に日付が入力されているものとしてます。。。 後は、アレンジしていただけると助かります。。。 では、、では、、
Option Explicit
Sub DatePeriod()
Const sCol As Long = 14
Const eCol As Long = 378
'全表示
Range(Columns(sCol), Columns(eCol)).Hidden = False
'非表示設定
If IsDate(Range("C1").Value) And IsDate(Range("C2").Value) Then
Dim mDate As Long: mDate = Cells(2, sCol).Value2
Dim mDate2 As Long: mDate2 = Cells(2, eCol).Value2
Dim sDate As Long: sDate = Range("C1").Value2
Dim eDate As Long: eDate = Range("C2").Value2
Dim memo As Long
'開始より前を非表示
If sDate > mDate Then
memo = sDate - mDate + sCol - 1
Range(Columns(sCol), Columns(memo)).Hidden = True
Cells(2, memo + 1).Activate
End If
'終了より後を非表示
If mDate2 > eDate Then
memo = eDate - mDate + sCol + 1
Range(Columns(memo), Columns(eCol)).Hidden = True
End If
End If
End Sub
(SoulMan) 2021/12/28(火) 20:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.