• ベストアンサー

エクセルで自セルの表示を変更できますか?

こんにちは、さっそく質問させていただきます。 エクセルで 「A1にhogeと入力すると、A1のhogeという文字列がfooという文字列に変わる」 というに シートもセルの位置も変えないで、入力したセル自身の表示を変えたいのです。。 しかし、セルには式を書かないといけないでしょうし 式を書いたところに入力したら上書きされて式がなくなってしまうと思います。 ちょっと特殊な使い方ですがこんなことはできるのでしょうか? よろしくお願いします。

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

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

こんにちは! VBAなら可能です。 A列すべてを対象とします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りA列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If .Value = "hoge" Then Application.EnableEvents = False .Value = "foo" Application.EnableEvents = True End If End With End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

scotch0416
質問者

お礼

ふむふむ、VBAという手がありましたか! VBAを触ったことがないので 書いていただいたソースを参考に勉強から始めたいと思います。 ありがとうございました。

その他の回答 (2)

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.3

hogeが数値だったらできますけどね・・・文字列→文字列だと一般機能ではできないです。

scotch0416
質問者

お礼

数値の場合はできるのですか! そのやり方も気になるところですが、 とりあえず回答者1、2さんのものでできそうです。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

マクロを使う必要があります。 以下の様なコードを対象シートのモジュールに記載します。 Private Sub Worksheet_Change(ByVal Target As Range)   If (Target.Address = "$A$1") And (Target.Value = "hoge") Then     Range("A1") = "foo"   End If End Sub また、ブックもマクロ有のブックにしなくてはいけませんので、拡張子がxlsxではなく、xlsmになります(Excel2003以前なら、どちらもxls)。

scotch0416
質問者

お礼

マクロというのは回答者1さんの言っているVBAのことでしょうか。 そこらへんの用語関係がフワッとしているので その部分から確認しつつ、参考コードを勉強してこうと思います。 ありがとうございました。

関連するQ&A

専門家に質問してみよう