• ベストアンサー

Excelの表示形式のことで、困っています。

Excelの表示形式のことで、困っています。 下図のとおり、 A列 |B列 時間|*時 人 |*人 A列をドロップダウンリストで選択すると、B列のユーザー定義の表示形式がそれに合った形式になる(例:Aで「時間」を選択すると、Bの表示形式は「##"時"」になる)ようにしたいのですが。 VBAを使えば出来るかもしれないとは思うのですが、そのやり方が分からず。 ご教示いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

おそらく以下のようなイベントマクロでご希望の操作ができると思います。 シート名を右クリックして「コードの表示」で以下のコードをコピー貼り付けしてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Tanni As String If Target.Column = 1 Then Tanni = Target.Value Select Case Tanni Case "時" Target.Offset(, 1).NumberFormatLocal = "##""時""" Case "人" Target.Offset(, 1).NumberFormatLocal = "#""人""" End Select End If End Sub

ogrlism
質問者

お礼

これこそ、私が求めていた回答です。ありがとうございました! Target.Column = 1 の数字をいじって、他の列でも試してみます。

その他の回答 (3)

  • conanthe
  • ベストアンサー率65% (114/175)
回答No.4

VBAを使わなくても、条件付き書式でできます。 B1に 条件を数式で「=A1="時間"」 書式をユーザー定義で「##"時"」 と設定し、下へ必要なだけ書式コピーすれば、同じことが実現できます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 横からお邪魔します。 A列の2行目以降がリスト表示になっているとします。 B列には必ず整数の数値が入るものとして・・・ 一例です。 操作したいSheet見出し上で右クリック → コードの表示 → 白い画面が出ますので、 ↓のコードをコピー&ペーストしてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Cells(i, 2).NumberFormatLocal = "#" & Cells(i, 1) Next i End Sub こんな感じですかね?・・・m(__)m

ogrlism
質問者

お礼

なるほど、こんなやり方もあるのですね。 ありがとうございます。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

シートモジュールのChangeイベントを利用します。 列Aのセルの値がChangeしたら、イベントが実行されます。 そのイベントで、そのセルの右隣のセルの書式を変更します。 書式の変更の仕方は、「マクロの記録」を利用して、手動で書式を変更して、それをマクロに記録すれば、解ります。 かなり大雑把な説明ですが、解らない単語は、ネットでキーワード検索して調べてください。 もしくは、他の親切な人が、そのものずばりの回答を書いてくれるかもしれないので、それを待ちましょう。

ogrlism
質問者

お礼

ありがとうございます。VBAの書き方に疎いもので、せっかくのご回答だけでは望む結果は得られませんでしたが、改めて試行錯誤してみます。重ねてありがとうございました。

関連するQ&A