[[20191105235056]] 『ユニコード文字を含む文字列からユニコード文字を』(てん) ページの最後に飛ぶ

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

 

『ユニコード文字を含む文字列からユニコード文字を削除したい』(てん)

あい💝うえお
こんな感じの文字列があります。ユニコードのハートの絵文字をとりのぞいた文字列を取得したい。
出来ればマクロでやりたいです。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 掲示された文字列であれば下記のユーザー定義関数で可能です。
 他の文字列での検証はしていません

 Option Explicit

 Function test(myRng As Range) As String
    Dim myFrmStr As String
    Dim myL As String
    Dim myNewStr As String
    Dim i As Long

    myFrmStr = StrConv(myRng.Text, vbUnicode)
    For i = 1 To Len(myFrmStr)
        myL = Mid(myFrmStr, i, 1)
        If myL Like "[0-9A-Z]" Then
            myNewStr = myNewStr & myL
        End If
    Next
    test = StrConv(myNewStr, vbFromUnicode)
 End Function

(渡辺ひかる) 2019/11/06(水) 09:47


んー、消したいのは💝だけですか? それとも、サロゲートペアに関するコード全てなのでしょうか?
また、この文字はVBAには直接書けないのですが、どこに書かれていますか? セルなら、そのアドレスとか範囲とか、ちゃんと書いて欲しいです。

とりあえず、A1セルだけに書かれているものとして(違うのならご自身で変更してください)、類似の文字全て変換するようにした例なぞ書いてみます。

 Sub test()
    Dim cHex As String
    Dim cw1 As String
    Dim cw2 As String
    Dim i As Long

    cw1 = Range("A1")

    For i = 1 To Len(cw1)
        cHex = Hex(AscW(Mid(cw1, i, 1)))
        If cHex < "D800" Or "DFFF" < cHex Then
            cw2 = cw2 & Mid(cw1, i, 1)
        End If
    Next i

    MsgBox cw2, vbInformation
 End Sub
(???) 2019/11/06(水) 09:59

コメント返信:

[ 一覧(最新更新順) ]


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