いつもお世話になっております。
【エクセル VBA】について、教えてください。
上司から指定の形式で表を作成するように指示されました。
その中で、空欄の行をフォームコントロールボタンを使用し、
表示のON、OFFができるように考えてほしいと言われ、困っています。
A列 B列 C列
1行 顧客名 ○○○ ▼▼▼
2行 空欄 ←ここだけ非表示
3行 顧客名 △△△ ●●●
・ ・
・ ・
・ ・
2行目の次は4行目を非表示にします。
このように記入行・空欄行が交互に何百と続く表になっています。
2行目の空欄は記入されることもあるので、削除することはできません。
次のように考えてみたのですが、これではデータが何百となった場合、
その数に合わせて式を組むことになってしまうため、現実的ではありませんでした…。
Sub co_()
With Rows("2")
.Hidden = Not .Hidden
End With
End Sub
初心者の為、このようにroopするVBAが組めるのかも判断できません。
作成できるものなのかも含めて、教えていただければ幸いです。
No.5ベストアンサー
- 回答日時:
ボタンを大量にコピーする事になるのでおすすめはしませんが一応・・・
全てのボタンに↓のプロシージャを実装してください
ActiveSheet.Rows(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row + 1).Hidden = Not ActiveSheet.Rows(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row + 1).Hidden
ボタンを配置したアドレスから非表示にしています。
ご回答ありがとうございました。
御二方、どちらもベストアンサーに選びたかったですが、
今回はxMAKISHIxさんを選ばせていただきました。
いろいろと考えていただき、ありがとうございました。
御二方のようになれるようにVBAの勉強を頑張りたいと思います。
同時に自分の力量ではできないことは断ることも覚えていきたいと思います。
本当にありがとうございました!
No.4
- 回答日時:
No.2・3です。
投稿後思ったのですが・・・
1行おきにボタンを配置するのは大変なので、A列をダブルクリックする方法ではどうでしょうか?
↓のコードをシートモジュールに記載し、A列をダブルクリックしてみてください。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
If Target <> "" Then
If Target.Offset(1) = "" Then
Cancel = True
With Target.Offset(1).EntireRow
If .Hidden = False Then
.Hidden = True
Else
.Hidden = False
End If
End With
End If
End If
End Sub
これでダブルクリックした下のセルが空白の場合、その行が非表示になります。
もう一度ダブルクリックすると再表示されます。m(_ _)m
No.3
- 回答日時:
No.2です。
>例えば1行目にフォームボタンを設置した場合、それをクリックすると2行目が非表示
>3行目にフォームボタンを設置し、クリックした場合、4行目が非表示としたいとのことでした…。
すなわち奇数行ごとにフォームコントロールのコマンドボタンなりを配置している!というコトでしょうか?
仮に1行目にボタンを配置している場合は
↓のコードにしてみてください。
Sub ボタン1_Click()
With Rows(2)
If .Hidden = False Then
.Hidden = True
Else
.Hidden = False
End If
End With
End Sub
あとは非表示にする行番号だけの変更で対応してください。m(_ _)m
No.2
- 回答日時:
こんにちは!
要するにA列が空白の行を非表示にすれば良いのですね?
もちろんループさせる方法もありますが、今回は一気に非表示にしてみました。
Sub Sample1()
Dim lastRow As Long, myRng As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set myRng = Range(Cells(1, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeBlanks)
If Not myRng Is Nothing Then '//←念のため//
myRng.EntireRow.Hidden = True
End If
End Sub
※ 再表示の操作も必要になってくると思います。
↓のコードで再表示されます。
Sub 再表示()
ActiveSheet.Rows.Hidden = False
End Sub
こんな感じではどうでしょうか?m(_ _)m
回答ありがとうございました。
私の説明が悪く、うまく伝わらなかったのですが、
例えば1行目にフォームボタンを設置した場合、それをクリックすると2行目が非表示
3行目にフォームボタンを設置し、クリックした場合、4行目が非表示としたいとのことでした…。
せっかくご回答いただいたのに申し訳ありません。
以上のように式を組むことはできないでしょうか…?
No.1
- 回答日時:
1行目を見出しにしています。
あとデータが入力されている下の行を非表示にすることにしています。
シート名は使用しているシート名に変更して下さい。
Dim startRow As Long
startRow = 2
Do While Worksheets("Sheet1").Cells(startRow, 2) <> ""
Worksheets("Sheet1").Rows(startRow + 1).Hidden = Not Worksheets("Sheet1").Rows(startRow + 1).Hidden
startRow = startRow + 2
Loop
回答ありがとうございました。
私の説明が悪く、うまく伝わらなかったのですが、
例えば1行目にフォームボタンを設置した場合、それをクリックすると2行目が非表示
3行目にフォームボタンを設置し、クリックした場合、4行目が非表示としたいとのことでした…。
せっかくご回答いただいたのに申し訳ありません。
以上のように式を組むことはできないでしょうか…?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力済み、選択したセルに連動...
-
Excelシート上のマクロを登録し...
-
ユーザーフォームをショートカ...
-
Excelで、ボタンにコメントをつ...
-
エクセルの画面にユーザーフォ...
-
エクセルでマクロボタンを押す...
-
【エクセル VBA】 非表示・再表...
-
APEXをパソコンでしようとゲー...
-
エクセルの×ボタンを消したい
-
マクロで作ったボタンのサイズ...
-
エクセルのチェックボックスと...
-
Excel2010のシート上にあるコマ...
-
【Excel】行移動ボタンを沢山作...
-
Excel ラジオボタンのリセット...
-
マクロを登録しているボタンが...
-
エクセルで、オプションボタン...
-
フォームコントロールから作っ...
-
UPS警告音を止めたい
-
VBAでオプションボタンなどそれ...
-
「ご処理進めて頂きますようお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
【Excel VBA】マクロボタンを表...
-
エクセルの画面にユーザーフォ...
-
マクロを登録しているボタンが...
-
フォームコントロールから作っ...
-
複数シートのボタンに同一の動...
-
Excel ラジオボタンのリセット...
-
Excelで、ボタンにコメントをつ...
-
EXCELのマクロが 実行時エラー5...
-
ユーザーフォームをショートカ...
-
マクロで作ったボタンのサイズ...
-
入力済み、選択したセルに連動...
-
ボタンを画像で作るか、CSSでデ...
-
Accessのフォームでタブの色
-
オブジェクト名をVBAで指定...
-
EXCELの塗りつぶしのボタ...
-
エクセルで、オプションボタン...
-
VBAでクリアボタンのみ残してシ...
-
エクセルでグループボックスを...
おすすめ情報
回答ありがとうございました。
私の説明が悪く、うまく伝わらなかったのですが、
例えば1行目にフォームボタンを設置した場合、それをクリックすると2行目が非表示
3行目にフォームボタンを設置し、クリックした場合、4行目が非表示としたいとのことでした…。
せっかくご回答いただいたのに申し訳ありません。
以上のように式を組むことはできないでしょうか…?