• 締切済み

セルに数字を打つと対応した文字を表示させるコード

お世話になります。Excel VBAで C4~F4まで一つに結合したセルに番号数字を打つと そこに番号に対応した文字を表示させるコードは何ですか? (それ以外を打つとエラーを返す動作を含む。) 例えば、1000を打つと○○株式会社と出るようにしたいです。 よろしくお願い申し上げます。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記をやってみること。理屈がわかる。 Sheet1の Worksheet_Changeイベントに Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address End Sub 結合セルはにデータを入れると、$C$4と返る。 すなわちC4~F4まで結合しているが、最左セルのみが代表して問題になること。 ーー 1000と入れてXX株式と社名に「変える」のは、いろんな方法があると思う。 エクセルではVLOOKUP関数が有名なので、それを使ってみると Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address If Target.Address = "$C$4" Then Set wf = Application.WorksheetFunction Application.EnableEvents = False On Error GoTo r1 MsgBox wf.VLookup(Range("c4"), Range("k2:L5"), 2, False) Range("C4") = wf.VLookup(Range("c4"), Range("k2:L5"), 2, False) Application.EnableEvents = True End If Exit Sub r1: MsgBox "該当なしエラー" Range("C4") = "" Application.EnableEvents = True 'Resume Next End Sub ーー セルの値の変更を捉えるのをC4に限定するコードを入れる。 ”C4”ではなく、"$C$4" thenのようにする。 K2:K5には 1000 A社 1100 B社 1200 C社 1300 D社 のようなものを入れておく。 エベントのぐるぐる回りを防ぐため Application.EnableEvents = False を入れておく。 そして終りに Application.EnableEvents = True で元に戻しておく。 >打つとエラーを返す動作を含む この意味が不正確な表現だ。 VLOOKUP関数の第1引数の列の参照データ以外の値をC4に入れたときのことらしいが、C4セル以外のセルの値を変えるとエラーというようにも取れる。 こういう文章の表現が、他人にどう取られるかよく考えること。訓練しておかないと会社の回覧情報などで失敗するよ。 ーー 一般にシートのChangeイベントは、使い方がむつかいしいので、初心者は使わない方がおすすめ。操作者がどういう操作をするか、すべて予想して捉えて対策コードを組み込むのは、熟練しないとむつかしいと思う。 ・むつかしさの一端 参考 http://excel-ubara.com/excelvba4/EXCEL206.html ーー 標準モジュールに Sub test02() Application.EnableEvents = True End Sub を入れて、テスト中に、イベント反応がおかしくなったら手動で実行するとよい。 ーー 質問者が、中級者以上でないなら、エクセル関数を使って隣セルにA社など社名を出す設計にしておくべきだと思うよ。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

シートモジュールに貼り付けてください Private Sub Worksheet_Change(ByVal Target As Range)   With Target     If .Address <> "$C$4" Then Exit Sub     On Error GoTo ErrorHandler     Application.EnableEvents = False     If .Value = 1000 Then       .Value = "○○株式会社"     ElseIf .Value = 2000 Then       .Value = "△□株式会社"     Else       .Value = .Value & " は、該当なし"     End If   End With ErrorHandler:   If Err Then MsgBox "Error Number = " & Err.Number & Chr(13) & _     "Error Message = " & Err.Description, , "Debug"   Application.EnableEvents = True End Sub 業者のコード表が他のシートに有るのなら(Sheet2のセルA1:B1500 と仮定) Private Sub Worksheet_Change(ByVal Target As Range)   With Target     If .Address <> "$C$4" Then Exit Sub     On Error GoTo ErrorHandler     Application.EnableEvents = False     .Value = Application.VLookup(.Value, Worksheets("Sheet2").Range("A1:B1500"), 2, False)   End With ErrorHandler:   If Err Then MsgBox "Error Number = " & Err.Number & Chr(13) & _     "Error Message = " & Err.Description, , "Debug"   Application.EnableEvents = True End Sub

関連するQ&A

  • VBAで文字コードを取り出したい

    セルに取り込んだ文字列にスペースが含まれ、VBAの" "で読まれません。関数で=CODE(B1)により取り込むと文字コード160です。 VBAで文字コード160で識別したいのですが、chr()などを試してエラーになります。 セル内の文字からmidで取り出したスペース(コード160)を、コード番号で識別してifを使って排除したいのですが、素人ですので、マクロがうまく作れません。 混乱していますが、よろしくお願いします。

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

  • EXCELで文字を数字に変換したい

    お世話になります。 エクセルシート上の見た目数字、実は文字列という値を、数字に変換したいのですが、EXCEL-VBAでどのように処理すればいいのでしょうか? 1.セルから文字列型の見た目数字の値をとってくる。 2.VBAで文字列型から整数型に変換する。 3.元のセルに貼り付ける。 4.セル書式を数字のカンマ形式にする。 リンクではなくこのような処理をしたいのですが、どうすればいいのでしょうか?

  • エクセルで、左側のセルに数字入力⇒右隣のセルに文字列を表示する方法

    エクセルで、左側のセルに数字入力すると、右隣のセルに文字列が表示される方法を教えてください。 1~500ほどのコードと、それに対応する顧客名のコードを昇順に並べたリストがあります。顧客コードを入力すると顧客名が隣のセルに自動的に表示されるようにしたいです。よろしくお願い致します。

  • エクセルVBAでセル結合

    いつもお世話になっています。 エクセル2003でVBAを使って下記をしたいのでその、VBA構文を教えて下さい。 特定の列のあるセルに文字が入っています。 (文字が入っている列は固定ですが、行番号はデータによって変わります。例えば、Aデータの場合は「J30」、Bデータの場合は、「J55」だったりします。) この文字が入っているセルをVBAで検索し、検索したセルを右隣のセルと結合します。(先ほどのAデータの場合、J30:Z30に結合します。) 更に、文字が入っているセルが2以上の複数の場合があります。(先ほどのAデータの場合、「J30」と「J40」と「J45」という感じです。文字が入っているセルの数はデータにより異なります。) 結合が終わり、このシートのデータがあるところだけに罫線を引きます。(このシートのデータというのは、前述の文字とそれ以外は、「数字」と「・」です。 ややこしいですが、よろしくお願いします。

  • エクセルで文字と数字が入っているセルを足すには

    エクセルで文字と数字が一緒に入っているセルの数字 だけを合計することはできるでしょうか? 例えば、休8のようなセルです。 よろしくお願いいたします

  • エクセルのセル内の1文字を置換で「セル内改行」コードにする

    お世話になります。 エクセルのセル内の1文字を置換で「セル内改行」コードにしたいのですが、 置換側の「ALT+改行」のコードが解りません。 宜しくお願いいたします。

  • エクセル 数字と数字を1セルに表示した時の

    エクセル2010を使っています。 =セル番号&セル番号で二つの数字を接続した時の事を教えて下さい。 例えば =22&114だと 22114 と表示されるのに =22&090だと 2290  と表示されてしまいます。 (数字はセル内の数字で実際はセル番号での連結です) これを 22090と表示させるにはどうしたら良いでしょうか? 詳しい方、よろしくお願いいたします。

  • エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい

    エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したいが、どのような関数を使えばよいのでしょうか?

  • エクセルで縦に各セルの数字を合計したセル(小文字数字)を違うセルに大文

    エクセルで縦に各セルの数字を合計したセル(小文字数字)を違うセルに大文字で表示するにはどうしたらよいでしょうか。