- ベストアンサー
エクセル 日本語入力及び貼り付け規制
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です >>VBAでも関数でも構いません。 ということでしたので、ある程度のサンプルさえあればいいのだろうと思って、回答したのですが… *M列をクリアした時(=4桁の数字ではない)をエラーとするのかどうか 不明ですが、とりあえずこれはOKということにしてあります。 *前回同様、セル範囲のペーストに対しても、有効となるようにしてあり ますので、少々長くなっています。 (1セルのみの対応にすれば、もっと間単になります) *不明な部分は適当に推測して作成していますので、質問者様が 思っている動作とは違うかも知れません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim RE As Object, msg As String, flg As Boolean Dim rng As Range, c As Range, c2 As Range '// M列N列に変更が無ければ終了 If Intersect(Target, Range("M:N")) Is Nothing Then Exit Sub Set RE = CreateObject("VBScript.RegExp") '// M列に関するチェック RE.Pattern = "\D" flg = False Set rng = Intersect(Target, Range("M:M")) If Not (rng Is Nothing) Then For Each c In rng msg = c.Value If msg <> "" And (Len(msg) <> 4 Or RE.test(msg)) Then flg = clValue(c, c2) Next c msg = "" If flg Then msg = "M列は4桁の数字でなければなりません" End If '// N列に関するチェック RE.Pattern = "[^!-~|\s]+" RE.Global = True flg = False Set rng = Intersect(Target, Range("N:N")) If Not (rng Is Nothing) Then For Each c In rng If RE.test(c.Value) Then flg = clValue(c, c2) Next c If flg Then If msg <> "" Then msg = msg & vbCrLf msg = msg & "N列には日本語の入力はできません" End If End If '// 結果の表示 Set RE = Nothing If msg <> "" Then c2.Activate flg = MsgBox(msg, vbCritical) End If End Sub Function clValue(c As Range, c2 As Range) As Boolean If c2 Is Nothing Then Set c2 = c clValue = True '// ClearContentsでChangeイベントが発生することが '// あるようなので、イベント発生を回避 Application.EnableEvents = False c.ClearContents Application.EnableEvents = True End Function
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 以下は、現在は、Ctrl + V にのみ設定しています。もし、他の貼り付けにも施す場合は、もう少し複雑になります。これは、クリップボードの中を調べて、その中身でもって判定します。 一旦、UserForm を作ってあげ、不必要なら、それを削除しても、DataObject が設定されます。そうして、貼り付けた後、Auto_Open を実行してください。Excelを再起動すれば、同様に設定できます。(現在のマクロでは、Ctrl + V を使った後は、Ctrl + Z が利かなくなります。) '標準モジュール Sub Auto_Open() Call SetKey End Sub Sub SetKey() Application.OnKey "^v", "CheckBuf" End Sub Sub Auto_Close() SetOffKey End Sub Sub SetOffKey() Application.OnKey "^v" End Sub Sub CheckBuf() Dim myData As DataObject Set myData = New DataObject 'UserForm を一旦作ってやると、出来ます。 On Error Resume Next myData.GetFromClipboard buf = myData.GetText If buf <> "" Then If ActiveWorkbook Is ThisWorkbook And _ Not Intersect(ActiveCell, Range("M3:M50")) Is Nothing Then If IsNumeric(buf) Then If CLng(buf) < 1000 Or CLng(buf) > 9999 Then MsgBox "数字の4桁ではないので、貼り付けできません。" Else Selection.PasteSpecial End If ElseIf (buf Like "*[ぁ-龠]*") Then MsgBox "2バイト文字ですから、貼り付けできません。" Else Selection.PasteSpecial End If Else Selection.PasteSpecial End If End If End Sub
お礼
Wendy02さん、 いつも御回答ありがとうございます。 この機能はまた違うマクロで使いたいと思っていたものです。助かりました。
- fujillin
- ベストアンサー率61% (1594/2576)
VBAでワークシートのチェンジイベントを利用して、値をチェックすれば可能と思われます。条件の不明な部分もあるので、適当にサンプルとして作成しました。 Private Sub Worksheet_Change(ByVal Target As Range) Dim RE, C As Range, C2 As Range, flg As Boolean Set C2 = Target.Cells(1, 1) flg = False Set RE = CreateObject("VBScript.RegExp") With RE .Pattern = "[^!-~|\s]+" .IgnoreCase = True .Global = True End With For Each C In Target If RE.test(C.Value) Then C.ClearContents flg = True End If Next C If flg Then MsgBox ("日本語の入力はできません") C2.Activate End If End Sub *セル範囲を限定していませんので、全セルが対象になっています。 適宜修正してください。 *とりあえず、日本語のあるセルはクリアして選択を移動しないように していますが、処置は適宜アレンジしてください。 *セル範囲のペースト(実際はないかも)もチェックできるようにして いますので、多少冗長になっています。
お礼
お礼欄で済みません。。。 >*セル範囲を限定していませんので、全セルが対象になっています。 すみません、 Columns("N:N") もしくは Range("N3:N50") のセルを限定するにはどうしたらいいのでしょうか? また、上記の Columns("M:M") もしくは Range("M3:M50") に4桁以外の数字しか入力されない方法も教えていただけると助かります。 よろしくお願いいたします。
補足
fujillinさん、 早速の御回答本当にありがとうございます。大変助かっております。 最終的に下記のようにアレンジして使用しました。ありがとうございます。 Private Sub Worksheet_Change(ByVal Target As Range) Dim RE, C As Range, C2 As Range, flg As Boolean, i As Integer i = ActiveCell.Row Set C2 = Target.Cells(i, 14) flg = False Set RE = CreateObject("VBScript.RegExp") With RE .Pattern = "[^!-~|\s]+" .IgnoreCase = True .Global = True End With For Each C In Target If RE.test(C.Value) Then C.ClearContents flg = True End If Next C If flg Then mymsg = MsgBox("日本語の入力はできません。", vbCritical) Cells(i, 14).Select End If End Sub で、ついでで申し訳ありませんが、Column"13=M"に文字列の数字を入力するのですが、4桁以外のものが入力された時に今回作成いただいたものを応用して使うことはできませんでしょうか? 何分初心者なので申し訳ございません。 お時間ございましたら、よろしくご対応下さいませ。
関連するQ&A
- エクセルで入力規制をかけたい
エクセルで入力規制をかけようと思うのですが、以下のような問題が解決できずにいます。良い方法がなかなか思いつきません。心当たりがありましたら、ご教授いただけませんでしょうか。 セルに入力規制をかけて「入力値の種類」を「整数」にしてます。(以下、このセルをAとする)しかし、入力規制されていないセルに10.5と入力されているが、10.5がセルの書式設定で11と表示されている場合、これをコピーして、「形式を選択して貼り付け」-「値」を選択するとAに貼り付けることができてしまいます。見た目は11と表示されていますが、数式バーには10.5と表示されています。これを整数だけに限定したいのですが・・・。 数式バーに表示される値も整数に限定させる方法はないものでしょうか。 「形式を選択して貼り付け」-「値」という方法以外の貼り付けを禁止する必要もあるような気がしています。
- ベストアンサー
- オフィス系ソフト
- エクセルの入力規制が適応されません。
エクセルで入力規制を設定しているのですが、規制されない時があります。 規制されているセルに、規制を超える文字をペーストをした場合に規制が適応されません。規制させる方法はありますでしょうか?もし無いようでしたらいい方法をご存知の方がいらっしゃればお教え願います。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルの日本語入力
先日ウィンドウズXP(ホームエディション 英語版)とオフィス2000(日本語版)を再インストールしてから、エクセルの日本語入力がおかしくなりました。 再インストールする前は、エクセルのセルの中に直接日本語を入力することができたのですが、今はそれができません。日本語をタイプすると、いったん(突然)出てくる入力用のセルというのでしょうか、それにタイプされ、エンターキーを押すと、エクセルのセルの中に日本語が入力されます。かなり面倒くさいのです。(説明、ちゃんとわかるでしょうか。) 英語は問題なく、直接セルの中に打ち込むことができます。 どなたか、この問題の解決方法をご存知でしたら、ぜひお答えください。よろしくお願いいたします。
- 締切済み
- Windows XP
- エクセルの日本語入力が変?
エクセルで 社員の勤怠表を自分なりに作成して 出面や残業時間、有給休暇などを管理しています。 リンク貼り付けや、たどたどしく関数を入れたりして まあまあの出来栄えのつもりですが、 あるセル列に日本語入力すると 最初の一文字が半角英数で直接入力になってしまい 二文字目から日本語になります。 火曜日 と入れようとすると kあ曜日 木曜日だと mおくようび という具合です。 ならない時もあります。 どなたかよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル、入力規制のリストについて
エクセルで毎日の日誌を作成しました。 定型文を入力規制のリストで作成しました。 日誌のフォーマットが毎日同じなので、同じワークシート内に30日分作成したところ、ある一定の量をコピー&ペーストすると【保存時】にエラーが出始めました。 そのエラーとは 追加された書式またはデータの一部が保存されませんでした。 ・保存せずにブックに戻るには[キャンセル]を押します ・この問題を修復せずに保存を続けるには、[OK]を押します ・問題の修復の詳細については、[ヘルプ]を押します [OK]を押して保存するとして、一回エクセルを終了して再度データを開くと入力規制のリストが解除され普通のセルになっています。 [ヘルプ]を押しても[ヘルプ]画面は開きますが何も表示されていません。 ある一定量まではコピー&ペーストしていっても上記エラーは出ませんが、一定量を超えると出てきます。 何故なのか解らなく非常に困っています。 助けてください。 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel入力規制について
Excelの入力規制について質問します。 A1セルにプルダウンがあり、「いちご、りんご、みかん」の3種類が選択可能な状態とします。 B1セルからB5セルの5セルが入力セルになっており、それらに下記の入力規制を設けたいです。 B1セルには10以下の整数のみしか入力出来ないよう規制を設け、更にA1セルのプルダウンで「いちご」が選択された場合は10以下の整数のうち3と4の入力が不可が不可となる。 知見のある方ご教示頂けると嬉しいです。
- ベストアンサー
- Excel(エクセル)
- excelのInputBoxで日本語入力OFFにしたい
タイトルの通りです excelのInputBoxで日本語入力OFFにしたいのですが、 VBAでIME(MS-IME)を制御できるのでしょうか。 セルへの入力であれば、入力規則で出来るので、 イメージとしては、そんな感じです。
- ベストアンサー
- オフィス系ソフト
- エクセルの入力規制について
エクセルで入力規制のリスト機能を使い、文字入力の手間を省きたいのですが、リストにない項目を入力したいときがあります。 入力規制なので、当たり前ですが、直接入力ができません。 なにかいい方法ないでしょうか。 できるかどうかわかりませんが、セルのB1に入力規制のリストを設定し、A1に「○」を入力した場合のみ、B2が入力規制になるとかいうのもありですが、もっと簡単にできないでしょうか。
- ベストアンサー
- オフィス系ソフト
- Excelの形式を選択して貼り付け
Excelファイルの内容をコピーして別のExcelファイルに ペーストするときにセルの列幅や高さ(結合セル)も ペーストしたいのですが 「編集」の形式を選択して貼り付けでは テキストの形式を選択する画面が表示されます。 条件を指定して貼り付けるにはどうしたら宜しいですか?
- 締切済み
- オフィス系ソフト
- エクセル 入力規制について
お世話になります。 エクセルでリストの入力規制を作成しました。メッセージエラーは”停止”にし、文字を入力しようとするメッセージがでて、入力はできないようになっています。 ただ、コピーしたものを貼付けると、規制がかからずリストに載っていないものも入力出来てしまいます。。 値の貼付でも規制がかかり入力を出来ないようにする方法はありますでしょうか? 恐れ入りますがどなたかご教示お願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
お礼
本当にどうもありがとうございました。 ばっちり動いてます。 大変助かりました。