電子書籍の厳選無料作品が豊富!

エクセルで、ある申込用紙のフォーマットを作成しています。

3種類の書式があるのですが、ブックやシートを増やしたくありません。
つまり1シートだけで書式を切り替えて、入力や印刷を行えるようにしたいのです。

具体的には、
A1セルにて、プルダウンメニューまたはラジオボタン等で、
「書式1」「書式2」「書式3」が選択できるようにします。

そして、例えばですが、
11行目~20行目には書式1で使う申込用紙の表
21行目~30行目には書式2で使う申込用紙の表
31行目~40行目には書式3で使う申込用紙の表
を作成しておいて、

書式1を選択すると、自動的に「書式2」「書式3」が非表示になれば良いと思っています。
書式3に変更すると、「書式3」を表示し、「書式1」「書式2」が非表示になれば良いと思っています。

これを手動でオートフィルタをかけるような操作感ではなく、
書式を選ぶ1操作だけで、パッとフォーマットが切り替わるように見せたいです。
どんな方法があるでしょうか?

A 回答 (4件)

こんにちは!



VBAになりますが、一例です。

>A1セルにて、プルダウンメニュー・・・
とします。

シートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRng As Range, myAry
myAry = Array("書式1", "書式2", "書式3")
If Target.Address = "$A$1" Then
ActiveSheet.Rows.Hidden = False
If Target <> "" Then
Select Case Target
Case "書式1"
Set myRng = Range("A21:A40")
Case "書式2"
Set myRng = Range("A11:A20,A31:A40")
Case "書式3"
Set myRng = Range("A11:A30")
End Select
myRng.EntireRow.Hidden = True
Else
ActiveSheet.Rows.Hidden = False
End If
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます!
私も質問した後、自分なりに調べて以下のシートモジュールを考えたところでした。
tom04さんの考え方に近いと思うのですが、違いが分かりません。
まだ私は経験も浅く、使えそうなものを切り貼りしてるレベルです。
目的通りに動作すれば一緒かもしれませんが、ああした方が良い、こうした方が良い等ご意見いただければ助かります。


Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Cells(1, 1).Value
Case "書式1"
Rows("11:20").Hidden = False
Rows("21:30").Hidden = True
Rows("31:40").Hidden = True
Case "書式2"
Rows("11:20").Hidden = True
Rows("21:30").Hidden = False
Rows("31:40").Hidden = True
Case "書式3"
Rows("11:20").Hidden = True
Rows("21:30").Hidden = True
Rows("31:40").Hidden = False
End Select
End Sub

お礼日時:2018/04/12 17:25

それぞれの書式って似たような感じなのでしょうか?ひとつのシートに複数の様式を作ると列幅の調整がやりにくくなるので、それなりの見た目を求めるのであれば、方眼紙的なシートになりがちなので、個人的には避けたいです。


普通に、書式毎にシートを分けて作って、表示するシートを切り替えた方が良いのではないでしょうか。選択していないシートは非表示にするとか、シートタブを非表示にするとか、見た目は変えられると思います。
シートを選択するプルダウンだけ同じ位置に作っておけば、操作した感じも変わらないと思いますよ。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

今回は、それぞれ似たような書式です。行を使い分けたい感じです。
また、一部の表は共通だったりします。
質問としては、書式1,2,3で分割した表現をしてますが、実際には1,2,3ともに使用する行があったりします。
その共通の表はたまに数式や表記を見直す事が想定されるので、シートに分かれていると不都合で、共有したいのです。

でも、いただいたアドバイスは別の機会に活用できそうです。

お礼日時:2018/04/13 10:35

No.1です。



誰がやってもやり方は似たような感じになると思います。

やり方は全く同じです。
当方がお示ししたコードは、
A1セルの値によってA列の各範囲を選択し、行を一気に非表示にしています。

再表示に関しては行を指定せずにすべての行を一旦再表示としています。

※ 万一A1セルが空白になる場合を考慮し、
その処理(A1セルが空白の場合は再表示)があるだけの違いだと思います。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
理解できました。

お礼日時:2018/04/12 18:01

こんにちは



>どんな方法があるでしょうか?
と言いながら、ご自分で「マクロ」と決めているのでは?

ちなみに、こんな方法もあるけれど・・・?
(一番下に、ツールバーに組み込む方法も出ています。)
http://www.atmarkit.co.jp/fwin2k/win2ktips/368ex …
    • good
    • 0
この回答へのお礼

ありがとうございます。
メールで送る、ネット配信でダウンロードしてもらう、等でこのファイルを受け取った人が、
迷わず入力できるようにしたいです。

お礼日時:2018/04/12 17:28

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