[[20120328162357]] 『関数を使わず 全角小文字を半角大文字に』(大) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『関数を使わず 全角小文字を半角大文字に』(大)

 いつもお世話になっております。

 セル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)少々修正

seiya様 再度ご回答ありがとうございました!

 希望通りの表示になりました!

 他のフォーマット原紙にも複数個所、
 使用出来そうな箇所がありましたので活躍しそうな感じです!

 度々の御教示、ありがとうございました!

                           (大)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.