- 締切済み
エクセル頭1文字いれた時に語句を自動で出す
Excelで、Aを入れたらABC, Bを入れたらBCD…というふうに語句を自動で出すことで、入力を省力化したいと思っています。 例えば、A列での入力の時、A1にABC、A2にBCDと入力しておけば、A3にAと入力すると候補として自動的にABC、Bと入力すると同様にBCDと表示され、enterを押せば確定、という事ができます。便利です。 しかし、この方法は、A列の途中に空白セルがあると使えなくなってしまいます。すなわち、上記例で、A3を空白にして、A4に入力すると、Aを押しても、Bを押しても、何も候補が出てこなくなります。不便です。 実現したいのは、A4やA100で入力するとき、A3やA3からA99が空白であっても、頭1文字をいれれば、ABC又はBCD…のような候補が自動的に出てくる状態です。なにか方法があるのでしょうか?ご存知の方いらっしゃいましたらご教示ください。なお、入力時に即時確定できることが重要で、A,B,Cと入力しておき、あとでまとめて変換するといった方法は求めるものではありません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mino33mino
- ベストアンサー率100% (1/1)
こんにちは 参考としたアドレス http://okwave.jp/qa/q312369.html sheet2に予め変換するリストを以下のように作成しておく。 A列 B列 A ABC B BCD 1 東京 2 大阪 等 参考までにエクセルのsheet2とVBAを貼付けした画像を添付します。 また,VBAに貼付けしたマクロは以下のとおりです。添付した画像を参考にVBAにコピーして貼付けしてください。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rg As Range 'セル Dim rgfnd As Range '見つけたセル On Error GoTo ErrorHandler Application.EnableEvents = False For Each rg In Target 'Sheet1のA列なら If rg.Column = 1 Then 'Sheet2を検索 Set rgfnd = Worksheets("Sheet2").Range("A:A").Find(rg.Text) If Not rgfnd Is Nothing Then '見つかったら書き換える rg = rgfnd.Offset(0, 1).Text Set rgfnd = Nothing Else rg = rg.Text & ":nothing" End If End If Next Application.EnableEvents = True Exit Sub ErrorHandler: 'エラー対応 Application.EnableEvents = True End Sub sheet1のA列にAと入力するとABCと変換されます。
- tarinko1341
- ベストアンサー率50% (1/2)
オプション設定を変えたり、ショートカットキーでの対応は無理みたいですね。 やるとしたら力技しかないかと。正直どれも手軽じゃないです。 ≪力技1≫ 入力する列の横になんでもいいので値を事前に一括コピー。 その列を非表示にしておけば、1つの表として扱ってくれるため候補に出ます。 これをユーザーに配るのであれば、ヘッダとして「行番号」などと記載しておき 連番を振ってそれっぽくしておけば非表示にする必要はないです。 ≪力技2≫ 入力欄に事前に「'」や半角スペースを一括コピー。 ≪力技3≫ ワークシートのイベントへ汎用的に動くマクロ追加。
お礼
力技2が一番良さそうです! しかし、’を入れておいても、10行くらいだとちゃんと候補表示があるのですが、100行下とかになると、候補表示がされないようです??どのような理由かはわかりませんが…。 とはいえ、質問の目的的には、100行も間があくことはなく、この回避策でも十分対応できそうです。ありがとうございました!