• ベストアンサー

Excel2003 強烈な入力規則

お世話になります。 表題の件でご相談が御座います。 「通常の入力規則」ではなく、「強烈な入力規則」の方法を模索しています。 通常の入力規則では、例え「半角英数」という設定をしていても「全角英数」をコピペで貼り付けたら 全角のまま貼り付けられてしまいますよね? これを「半角でないと貼り付けられない」では手間がかかり困るので、「半角にして張り付けてしまう」ぐらいの 強力な入力規則の方法を探しております。 そんな方法は御座いませんでしょうか? ご存知の方がいらっしゃいましたら ご教示ください。 宜しくお願い致します。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> 入力する列は「E列」なので「e2」と変更しましたが 小文字のままだとダメなのでしょうか? やってみてダメだったでしょう? ちゃんと大文字にしてください。 > これを「E列全て」に反映させたいので ”E:E”とすれば良いでしょうか? それもダメです。 Targetのアドレスで判断しているのですから、入力先がE列全体とか広い範囲がアドレスなんてことはないでしょう? そういう場合は列で指定します。 >C、E、L、Qの各列に反映させたいと考えております C、E、L、Qの各列に指定したいなら、Cは3、Eは5、Lは12、Qは17列目ですから以下のようにします。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Column Case 3, 5, 12, 17 Target.Value = StrConv(Target.Value, vbNarrow) End Select End Sub ついでなので、(というか追加で質問されそうなので)書いておきますが、単一のセルだけでなく、指定例内の一定の範囲に貼り付けられた場合にも対応するんでしたら、以下のようにします。 但し、これだと範囲内の貼り付けられたセル一個ずつ見ていかなければならないので範囲が広いとかなり遅くなってしまいます。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Column Case 3, 5, 12, 17 If Target.Count = 1 Then Target.Value = StrConv(Target.Value, vbNarrow) Else With Application .ScreenUpdating = False .Calculation = xlCalculationManual For Each Tg In Target Tg.Value = StrConv(Tg.Value, vbNarrow) Next Tg .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End If End Select End Sub 上記2つのコードはどちらかしかつかえません。 ふたついっしょに同一モジュールに存在するとエラーになりますのでご注意ください。

ookami1969
質問者

お礼

何度も ご回答いただきまして誠にありがとう御座います! 上のコードで完璧でした!! ありがとう御座います。 世話のやけるヤツですみません。 目的は見事に達成されました!! ありがとう御座います。 本当ならポイントを30P差し上げたい所なのですが 20Pしか差し上げられないので 20Pでご了承ください。 何度も ご教示いただきまして本当にありがとう御座いました!!

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> シートは1枚しかないので「Sheet1」の所に貼り付ければOKですか? そうです。シートモジュールです。 「出来ません」とは、まったく機能せず、A1セルに全角英数のままで張り付くということでしょうか? 今、自宅のエクセル2003で、回答したコードをそのままコピペしてやってみたところ、直接入力でもコピペでもちゃんと機能して半角になりましたが・・・。(全角しかない文字は当然半角にはなりませんが)

ookami1969
質問者

お礼

再度の ご回答ありがとう御座います!! 出来ました!!! 超感動しました!!! これぞ まさしく求めていた事です!!! 入力する列は「E列」なので「e2」と変更しましたが 小文字のままだとダメなのでしょうか? 大文字に変更したら すさまじく強烈に機能してくれました!!! これを「E列全て」に反映させたいので ”E:E”とすれば良いでしょうか? それとも”E”だけでOKですか? はたまた 無駄に一番下まで反映させずに”E2:E5000”とかにしておいた方が良いでしょうか。 よろしければご教示いただけますでしょうか。 (小文字ではダメなのかと合わせてご教示いただけると大変助かります。。) 宜しくお願い致します。

ookami1969
質問者

補足

たびたび申し訳御座いません。 よく考えたら「複数の列」で ご教示いただいたコードを使用したいので (C、E、L、Qの各列に反映させたいと考えております) その方法も ご教示いただけませんでしょうか。。。 お忙しい中 大変恐縮では御座いますが 何卒 宜しくお願い致します。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

では、強烈なのを。 入力された値を半角にしてしまいます。 VBAを使うことになります。以下の手順を試してみてください。 これはA1セルを対象にしていますが、他のセルにしたければA1の部分を書き換えてください。 1.シートのタブを右クリックし、「コードの表示」を選択。 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。 '*****ここから下をコピペ***** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub Target.Value = StrConv(Target.Value, vbNarrow) End Sub '*****ここより上までをコピペ***** 3.AltキーとF11キーを同時に押してワークシートへもどります。

ookami1969
質問者

お礼

ご回答ありがとう御座います。 が、しかし。。。。 出来ませんでした。。。。 直接入力をしても コピペで貼り付けても結果は同様でした。。。 (出来ればコピーした後Enterを押してそのまま貼り付けるか Ctrl + Vで貼り付けると思いますので それ対応が望ましいのですが) シートは1枚しかないので「Sheet1」の所に貼り付ければOKですか? それとも「ThisWorkbook」でしょうか。 はたまた「標準モジュール」でしょうか。 ご教示ください。。。。 宜しくお願い致します。

関連するQ&A

  • Excel:関数と入力規則

    セル[A2]に入力規則>設定タブ>入力値の種類で「ユーザー設定」、数式に「=LENB(A2)<=16」 と設定しています。 この設定によりこのセルには全角8文字もしくは半角16文字を超えての入力を禁止させています。 その隣のセル[B2]にはセル[A2]の入力値がそのまま自動表示されるように「=A2」とし、かつ入力規則>設定タブ>入力値の種類で「ユーザー設定」、数式に「=LENB(A2)<=12」 と設定しています。 この設定によりこのセルには全角6文字もしくは半角12文字を超えての入力を禁止させています。 例えば、セル[A2]への入力文字が全角6文字以内であれば問題ないのですが、8文字になった場合、セル[B2]の入力規則が無視され、8文字で表示されてしまうのです。 これは仕方がないのでしょうか? ちなみにセル[B2]の関数を無視して直接セル[B2]に入力するのは入力規則が正常に反応し、全角7文字以上は入力できません。 何か良い方法があれば御教示願います。

  • Excel2003 すでに入力されている全角文字

    お世話になります。 掲題の件で 質問が御座います。 通常「全角文字」→「半角文字」に変換する際には「=ASC」を使いますが この関数を使わずに どこかのキー1発で 「すでに入力されている全角文字を半角文字」に変換出来ないでしょうか? (漢字、ひらがな以外のカタカナ、アルファベットをです) 入力途中の場合は「F8」だということは知っていますが すでに入力されている文字に対しては無効の手段ですよね。。 通常は そのような機能は無く、やはりVBAの出番となるのでしょうか? どなたかお分かりになる方、ご教示ください。 宜しくお願い致します。

  • 入力条件の指定・・・・

    いつもお世話になってます。 Windows2000/ACCESS2000を使用してます。 既にフォームは作成できてるのですが、フォームのテキストボックスに入力する時に全角の英数で入力しないといけないみたいな設定って出来るのでしょうか? 入力する人によって、電話番号を半角の英数で入力したり、全角の英数で入力したりする人っているので、統一させる為にも一定の条件でしか入力出来ないようにする方法ってあるのでしょうか? あと、苗字と名前の間に1つスペースを空けるように設定するとか・・・。 テキストボックスのデーターの入力規則のところに単に全角英数とか書けば良いのでしょうか? お手数かけますが、宜しくお願いします。

  • 入力モードがおかしい

    通常日本語で入力していて、文章中に英文字を入れる場合、今までは 「半角英文字」であれば「半角全角キー」、「全角英文字」であれば「英数キー」を押して入力していましたが、突然、昨日からこの通りに出来なくなってしまいました。現在の状態は、「半角全角キー」を押すと「半角英文字」は打てるのですが入力モードは「直接入力」になっています。 「全角キー」を押すと入力モードは「半角英数」になります。 従来の様に「英数キー」で「全角英文字」を打つにはどうしたら良いでしょうか?

  • Excel:入力規則>文字列(長さ指定)

    この設定項目の中で最小値「0」最大値「8」にすると9文字以上の文字列は入力できなくなりますが、この文字は全角・半角の区別が出来ないようです。 ここで全角文字の場合は「8文字」までで半角文字の場合は「16文字」まで、といったような設定は出来ないのでしょうか? 入力規則以外の方法でも構いません。 よろしくお願い致します。

  • Excel2003 入力規則

    英数混在する入力規則の方法について質問です。 例えばA1~A10の表に ZZ、KK、J、55、36 という5種類の英数字以外の入力を禁止する方法は どうすれば良いのでしょうか? 宜しくお願い致します。

  • キーボードの入力がおかしくなりました

    エンターキーを押すと「x」が入力され改行が出来ません。また、エンターキーを押したとき、入力モードが半角英数から全角英数に変わります。バックスペースキーを押しても半角英数から全角英数に変わります。元に戻す方法を教えてください。よろしくお願いします。

  • ワードで、’(アポストロフィー)を半角入力したのに、メモ帳にコピペすると全角になっているのはなぜ?

    WinXPでWord2003を使っています。 ワードの書類上で、’(アポストロフィー)を半角入力したのに、 メモ帳にコピペすると全角になってしまうことに困っています。 (文字化けを防ぐために全て半角英数に統一したいので) 具体的には、入力モードを半角英数にして、 Shiftキー+7でアポストロフィーを入力しています。 ワード上では間違いなく半角で入力されているのですが メモ帳にコピペするとアポストロフィーだけ全角になってしまいます。 何か設定を変えれば解決しますでしょうか。 詳しい方いらっしゃいましたら、宜しくお願いします。

  • 文字入力が頻繁に半角と全角の英数のみになる・・

    どこを押しているという訳でもないのですが、文字などを入力していると、頻繁に半角と全角の英数になってしまいます。 通常ならなにかの拍子にESCの下の切り替えタブを押してしまっても、もう一度押せばひらがな入力に戻りますよね? ところがこの症状がでると、切り替えタブを押しても、全角の英数と半角の英数の切り替えにしかならず、マウスでクリックしていちいちひらがな入力に変えなければならなくて非常に困っています。改善方法はありませんか?

  • エクセルの入力規則(できますか?)

    ネットワーク上で共有しているエクセルファイルがあります。 このファイルは複数の人間が入力するため、独自の入力規則を設けているのですが全く守られていません。 これらを防ぐため(入力規則を守るため)、特定の文字を入力するとアラートを表示させることはできますか? 具体的には「全角の英数字及び記号(スペースも含む)」、「半角のカナ」を入力させたくありません。 入力規則や禁止他、何でも良いので方法を教えていただけないでしょうか? よろしくお願いいたします。

専門家に質問してみよう