[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『関数を使わず 全角小文字を半角大文字に』(大)
いつもお世話になっております。
セルA1に m12345 と 全角小文字 で入力した場合に セルA1に M12345 と 半角大文字 で表示させる方法を探しています。
入力と表示のセルが同じなので ASC や UPPER 等の関数は使用出来ません。。。
入力規則も試しましたが、 半角にはなっても 大文字にならず。。。
書式設定のユーザー定義でも 該当しそうなものが見つかりませんでした。
何か良い方法がありましたら、宜しくお願い致します。
[[20071126040051]] 『指定範囲の全角文字を半角に』(RORO)
上記を参考に、
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target.Cells(1, 1), Range("A1")) Is Nothing Then Rem Do Nothing Else Application.EnableEvents = False With Target.Cells(1, 1) .Value = Evaluate("Transpose(Transpose(Upper(Asc(" & .Address & "))))") End With Application.EnableEvents = True End If End Sub
上記コードをシートモジュールに登録。
(該当シートの見出しタブを右クリック、コードの表示を選択、
起動したVBエディターのコードウィンドウに上記コード貼り付け)
セルA1で入力して試してください。
(みやほりん)
もしA1だけが対象なら
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With Range("a1") If Not Intersect(.Cells, Target) Is Nothing Then .Value = [upper(asc(a1))] End If End With Application.EnableEvents = True End Sub
A列、ということなら
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Application.EnableEvents = False With Columns(1) If Not Intersect(.Cells, Target) Is Nothing Then For Each r In Intersect(.Cells, Target).Areas r.Value = Evaluate("upper(asc(" _ & r.Address & "))") Next End If End With Application.EnableEvents = True End Sub
かな? (seiya)
みやほりん様、seiya様 ご回答ありがとうございました!
やはり マクロ(VBA?) でしか処理出来ないのですね。。。 マクロは使ったことがないので。。。 使えるようになれば便利だとは思いつつ、 難しそうなので なかなか 手が出ません。。。
が、
>上記コードをシートモジュールに登録。 >(該当シートの見出しタブを右クリック、コードの表示を選択、 > 起動したVBエディターのコードウィンドウに上記コード貼り付け)
と御教示まで いただけたので 無事 解決しました!
みやほりん様、seiya様 どちらの場合でも 同じ 求めていた処理 になりました!
ちなみに セルA1の他に A2、A3 もという場合は どうなるのでしょうか? (※その下 A4以降は全角も使用するので 上記条件を付けたくありません)
度々で申し訳ありませんが、宜しくお願い致します。
(大)
>入力規則も試しましたが、 >半角にはなっても 大文字にならず。。。
=EXACT(A1,UPPER(ASC(A1))) で、半角大文字以外は、 入力が拒否されます。 (純丸)(o^-')b
純丸様 ご回答ありがとうございます!
が、 入力を規制したいのではなく、 入力した文字を 半角大文字 に 強制変換したかったのです。。。
>入力規則も試しましたが、 >半角にはなっても 大文字にならず。。。
で試したのは、 「入力規則」→「日本語入力」→「オフ(英語モード)」にすると そのセルを選択すると、 日本語入力にしていても 自動的に 英数半角入力 に変わるようなのです。 ですが、結局 大文字にならなかったので、 今回 希望通りにはならず。。。
ということでした。 説明が下手で申し訳ありませんでした。
(大)
> ちなみに >セルA1の他に A2、A3 もという場合は どうなるのでしょうか? >(※その下 A4以降は全角も使用するので 上記条件を付けたくありません)
そのまま使うなら Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Application.EnableEvents = False If Not Intersect(Range("a1:a3"), Target) Is Nothing Then [a1:a3] = [if(row(a1:a3),upper(asc(a1:a3)))] End If Application.EnableEvents = True End Sub (seiya)少々修正
希望通りの表示になりました!
他のフォーマット原紙にも複数個所、 使用出来そうな箇所がありましたので活躍しそうな感じです!
度々の御教示、ありがとうございました!
(大)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.