Excel-VBA 不要列非表示

Excel VBA
Excelでデータの無い列や行を削除する場合、多くは手作業です。
定形処理なら、自動化すべきですが、これはMacroだけでは無理。
どうしてもVBAでの記述が必要となります。
LOOP構文で、Cellsを使ってセルの内容をチェックして非表示条件を決定します。
非表示をした場合、その対象を別途表示する仕組みもつけました。

Souceは簡単に見えますが、LOOP中のCellsのパラメータは錯誤しやすく、何度も
検証が必要です。

以下、Source


Sub HLP_PRINT()
'
' HLP_PRINT Macro

' データの無い列を非表示にする

'
Sheets("PRINT").Select
Range("A1").Select


Dim k As Long, i As Long, j As Long
Dim Cnt As Long, Cnt2 As Long

Cnt2 = 2

For k = 2 To 51
Cnt = 0


For i = 5 To 33

If Cells(i, k) <> "" Then

Cnt = 0
Exit For

Else

Cnt = Cnt + 1

End If

Next i

' Debug.Print Cnt

If Cnt = 29 Then

Cnt2 = Cnt2 + 1


Cells(Cnt2, 53) = Cells(1, k) ' 非表示としたcodeの書き込み

Columns(k).Hidden = True ' 非表示とする

End If

Next k

Range("BA1").Select
Range("BA2") = "非表示Code"


End Sub



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

ワオ!と言っているユーザー

Excel-VBA 小技

ExcelのSheetで、同じ文字列を一気に削除するVBA
指定した文字列を一旦カラー化し、その後削除のY/Nを尋ねる方法
冗長な手法だけど、可読性は高く、改造し易い・・・・

以下が、Source

Sub SAKUJYO()
'
' SAKUJYO Macro
'

Sheets("Room").Select

Range("B5:BA33").Select
With Selection.Font

.Name = "游ゴシック"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor

End With
Range("A4").Select

Dim D_thcd As String

Dim i As Long, j As Long, k As Long

Dim Rtn As Integer

Dim Cnt As Long


D_thcd = InputBox("削除するcodeを入力", , "th")


If Left(D_thcd, 2) <> "th" Or Len(D_thcd) <> 5 Then

MsgBox ("codeが間違っています")

End

Else

'--------------------------------------------
' 指定したcodeの文字を赤にする

For k = 5 To 33

For i = 2 To 53

If Cells(k, i) = D_thcd Then

Cells(k, i).Font.ColorIndex = 3
Cnt = Cnt + 1

End If

Next i

Next k

End If

'-------------------------------------------------
' 指定した文字を削除し、背景を着色する

Rtn = MsgBox("削除しますか", vbYesNo, Cnt & "件あります")

If Rtn = vbYes Then

For k = 5 To 33

For i = 2 To 53

If Cells(k, i) = D_thcd Then

Cells(k, i) = ""
Cells(k, i).Interior.ColorIndex = 19 'セルを着色する

End If

Next i

Next k

Else

End

End If

'
End Sub




わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

ワオ!と言っているユーザー

識別文字

その昔、プログラムで口糊をしていた時代がありました。
Cを朝から晩まで、狂った様に書き続けた記憶があります。
問題は、そのSouceの盗用防止です。

退職したり、外注にLIBを渡した場合、それがそのまま他社で使われたらたまりません。
そのため、密かに識別単語、識別文字を使っていました。
識別文字は変数にわざとミススペルを、識別文字で最も多く使ったのは「K」です。
LOOP変数には通常小文字を使いますが、「K」だけは大文字を使います。
一番、苦労して手間がかかるのはLOOP構文なのです。

盗用で争う事を想定しての防御で、社員にも外注にも、その存在を告知していました。
識別単語、識別文字があれば、Souceの比較で盗用が立証できます(判例あり)、
いわゆる地雷です、ゼロからコーディングすれば良いのですが、Souceを持ち出し、
それを窃用したら、損害賠償問題となりますから、これがある事を意識させるのが
一番の防止策でした、遠い昔の思い出です・・・・


以下はSouceの一部、「K」に注目!!

Dim i As Long, j As Long, K As Long


For K = 5 To 33

For i = 2 To 53

For j = i + 1 To 53


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

ワオ!と言っているユーザー

Excel-VBA 重複データの検出

Excelでの入力後のチェックで厄介なのは「重複」です。
今回はシフト表での問題。

値は正しいのですが、時間帯が重複することは許されないので、これを検出します。
Loop でセルを一個、一個確認しながら比較する、原始的な方法ですが、検出時に
該当セルのフォントを着色出来る強みがあります。

縦に時間軸、横が作業場所、同じ時間帯に同一ワーカー(コードth999)が、存在
した場合、重複データのフォントを赤に変更、ただし比較は1:1まで。
修正後、再チェックを繰り返せば2個以上でもOK
構文は可読性を重要視しています・・・・

以下はそのSouce

Sub DupCHECK()
'
' DupCHECK Macro

' Sheet Room でのヘルパーの時間帯重複のCHECK


Sheets("Room").Select



Range("B5:BA33").Select
With Selection.Font
.Name = "游ゴシック"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
Range("A4").Select


Dim i As Long, j As Long, K As Long


For K = 5 To 33

For i = 2 To 53

For j = i + 1 To 53

If Left(Cells(K, i), 1) <> "t" Then
Exit For
End If

If Cells(K, i) = Cells(K, j) Then
Cells(K, i).Font.ColorIndex = 3
Cells(K, j).Font.ColorIndex = 3
Exit For
End If

Next j

Next i

Next K

'
End Sub



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

ワオ!と言っているユーザー

今日の日の出(2022.10.04)😄

今日の日の出(2022.10....
日の出位置は小牧山の南麓へ・・・
早暁に降雨がありましたが、今はやんでいます。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#X100V
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#kuma

ワオ!と言っているユーザー

今日の夕景(2022.10.02)

今日の夕景(2022.10.0...
今日は柿園で草刈りと収穫。
まだ、上り斜面での草刈りは背中への負担が大きく、すぐにパンパンに張って
持続が出来ません。

柿の収穫に専念・・・・


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya

#SIGMA_DP0
#kuma

ワオ!と言っているユーザー

各務原遺産の森トレッキング(2022.10.01)

遺産の森にある、江戸時代の旧家... 遺産の森にある、江戸時代の旧家の復元
先週に引き続き、遺産の森のトレッキングです。
出発が少し遅めで、暑さにやられました、いつまでこの暑さが続くんでしょう・・・

どうにか登攀は出来るようになりましたが、下りにはまだ背中が突っ張る感じがします。
痛みはありませんが・・・・


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya

#HW01

#トレッキング
#trekking
#kuma

ワオ!と言っているユーザー

今日の夜明け前2(2022.10.01)

今日の夜明け前2(2022.1...
今日から10月です。
日の出は雲が厚く陽光の撮影は出来ませんでした。
今日もお山に行きます・・・・


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya

#SIGMA_DP0/2

#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#トレッキング
#trekking
#kuma

ワオ!と言っているユーザー

ExcelVBAでShift管理

ExcelVBAでShift管...
ExcelVBAでShift管理のための可視化(横棒グラフ)を作成中。
名前(ぼかしてある)の右横のCELLの値が勤務時間
7.5+10 なら7時30分から10時間
8+4 なら 8時から4時間
を表します。

この数値だけでは、全体の状況が掴めないので、これを可視化。
スタッフの勤務状態がわかりやすくなります。



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

ワオ!と言っているユーザー

今日の日の出Movie(2022.09.30)😄

静止画をMovieにしていますが、テンプレート使用なので、数分で完成します。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#AVIUTL
#X100V
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#kuma

ワオ!と言っているユーザー

×
  • ブログルメンバーの方は下記のページからログインをお願いいたします。
    ログイン
  • まだブログルのメンバーでない方は下記のページから登録をお願いいたします。
    新規ユーザー登録へ