[[20071126040051]] 『指定範囲の全角文字を半角に』(RORO) ページの最後に飛ぶ

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

 

『指定範囲の全角文字を半角に』(RORO)

 いちも参考にさせてもらってます。過去ログでシート内全ての全角文字を
 半角する方法やアクティブセルの全角英数文字を半角にする
 方法は見つかったのですが、応用が出来なくて質問させてもらいました。

 やりたいことはマクロを使い指定範囲(C7:C36)にある文字(英数のみ)を
 全て英語は半角大文字で数字は半角に変換したいのです。

 よろしくお願いします。

 Sub test()
     Dim st As String
     st = "abc123"
     MsgBox st
     MsgBox StrConv(StrConv(st, vbNarrow), vbUpperCase)
 End Sub
 こうゆう事ですか?
 (じゅんじゅん)

 こんな方法も。(ROUGE)
'----
With Range("C7:C36")
 .Value = Evaluate("Tranpose(Transpose(Upper(Asc(" & .Address & "))))")
End With

  (じゅんじゅん)様

 マクロで表@が表Aになるようにしたいのです。
 ちなみに同じシート内で同じセルが変わるように考えています。

 セル内には大文字小文字半角全角が混在し、それらを全て半角大文字英数と
 半角数字に変換したいのです。よろしくお願いします。 (RORO) 

 表@	[C]
 [7]	TT64324
 [8]	QR3421
 [9]	45Ytp
 [10]	qqq436
 [11]	ww43W

 表A	[C]
 [7]	TT64324
 [8]	QR3421
 [9]	45YTP
 [10]	QQQ436
 [11]	WW43W


 こんにちは。
 じゅんじゅん さんのコードを利用させていただきました。 (1or8)

 Sub test()
     Dim r As Range
     For Each r In Range("C7:C36")
        r = StrConv(StrConv(r, vbNarrow), vbUpperCase)
     Next
 End Sub

 σ(^-^;)の方法はうまくいきませんでしたか?(ROUGE)

 (じゅんじゅん)様、(1or8)様

 うまく出来ました。ありがとうございます。(RORO)

 >σ(^-^;)の方法はうまくいきませんでしたか?
 えぇ、うまくいきまへんでした〜^^
 バージョンの所為?
     ミス捜しに無上のよろこびをおぼえる(弥太郎)


 ししょ〜、ありがとうございます。
 ひとりごつほどさびしいものはありませんので(;_;)
 2003ではうまくいくんですがね。。。
 seiyaさんが最近よく使われるEvaluateの格好の題材だと思って取り組んだ結果ですが、なぜでしょう?
 (ROUGE)

 あっしのんは2000ですワ。
 2003で上手くいくんやったらやっぱしバージョンでっしゃろなぁ。
     (弥太郎)

 あ、それとイチかパチかはんのんは「アイディアNo8825」等のケースやと
 思うデータにならないかもしれまへんなぁ。
       (弥太郎)

 >2003ではうまくいくんですがね。。。
 あれ〜?
 2003 でも #NAME? ってなってしまうぅぅ
 sub〜end で挟んだだけなんですがね・・・

 >「アイディアNo8825」等のケースやと思うデータにならないかも
 カタカナがだめなんですかね?
 ヘルプだと「国別情報の設定が中国、韓国、および日本の場合に適用されます。」ってなっていたので
 じゅんじゅん さんのでいけるって思っていたのですが (^^ヾ

 (1or8) 最近詰めが甘い回答ばっかり (ToT)

 > >「アイディアNo8825」等のケースやと思うデータにならないかも
 >カタカナがだめなんですかね?
 >ヘルプだと「国別情報の設定が中国、韓国、および日本の場合に適用されます。」ってなっていたので
 >じゅんじゅん さんのでいけるって思っていたのですが (^^ヾ

 条件が、
 >文字(英数のみ)を 全て英語は半角大文字で数字は半角に変換したい
 と言う事でしたので、気にもせず回答してました。
 (じゅんじゅん)

 これでどうでしょう。(ROUGE)
'----
Sub test()
Dim rng As Range
For Each rng In Range("C7:C36")
    rng.Value = myUpper(rng.Value)
Next
End Sub
Function myUpper(txt As String) As String
Dim i As Long
For i = 1 To Len(txt)
    If Mid(txt, i, 1) Like "*[ア-ン]*" Then
        myUpper = myUpper & Mid(txt, i, 1)
    Else
        myUpper = myUpper & UCase(StrConv(Mid(txt, i, 1), vbNarrow))
    End If
Next
End Function

 こんな感じかな?

 Sub test()
 With Range("C7:C36")
     .Value = [if(c7:c36<>"",upper(asc(c7:c36)),"")]
     .Value = .Value
 End With
 End Sub
 (seiya)

 >>文字(英数のみ)
 ですから、ROROはんのばやいはこれでOKなんですけど、過去ログを頼りに訪れる御方
 の中にはそれ以外に上のようなカタカナ混じりの英数を変換したいと望んでいるかも
 しれまへんしなぁ・・・。
 それと、ROROはんは
 For Each r In Range("C7:C36")
 このやり方を知りたかったんでっしゃろなぁ。
 なぁに、単にいちゃもん屋の戯言と笑ってやっておくんなはれ。^^
        (弥太郎)


 もし、Evaluate で書くならば、ということで...
 (seiya)

 誤記がありました。
 Evaluate内のTranspose×2のうちのひとつがTranposeに。。。orz
 (ROUGE)

 っちゅう事はヴァージョンの違いやなかったんでんな。
 「いよっ! 二代目seiyaはん!」^^
       (弥太郎)

コメント返信:

[ 一覧(最新更新順) ]


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