- ベストアンサー
VBA複数文字のコードを一気に返す方法
- VBAで複数の文字のコードを一気に返す方法について説明します。
- 「Asc」関数を使用することで、文字のコードを取得することができます。
- 複数の文字のコードを一気に返すためには、文字列を一文字ずつ分割して「Asc」関数を適用する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のような感じでもいいと思います。 Sub Example() Dim myStr As String, StrAsc As String Dim i As Integer myStr = "abcdefg" For i = 1 To Len(myStr) StrAsc = StrAsc & ":" & Asc(Mid(myStr, i, 1)) Next i Debug.Print StrAsc End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
ASC関数は(指定した)文字列の、最初の文字のアスキーコードを返す関数ですから、3文字分のアスキーコードを作りたいなら3文字分のそれぞれについて、計3回の繰り返しをするほかない。それにはMID関数、LEN関数の助けも要ります。16進数で表示したい場合もあるが、同じように、VBAコードのミクロではそうなる。関数化して、複数文字の文字列を指定して、16進のコードを変えさせる方法があるが、質問者が聞きたいのはそれではないだろう。 ーー 突き詰めて言えば、言語レベルでそれ(複数の文字列の文字コード化の関数)が仮に設けられていても、その関数の内実では、機械語レベルでは、繰り返しが行われているはず。言語にとっては、C言語のような文字列の扱いのような言語もある。ここにその根底が垣間見える。 ーー 参考 本質問直接関係ないが。 Googleで「C言語 文字列の扱い」で照会。 http://www.isl.ne.jp/pcsp/beginC/C_Language_11.html ーー ですから、自分でバイト数だけ繰り返すか、1発でできるように「見せかける」ところの、ユーザー定義関数を自分で作るしかない。 ーー ケメニーのbasicの基本草創時代(1964年から20年ぐらい)ではASC関数もなかったように思う(不確か)。 MS社がBasicに加わる時代になって、ビジネスでは必須の、文字列関係の関数も増えたように思う。Mid関数、LEN関数など。 http://gigazine.net/news/20140501-fifty-years-of-basic/
お礼
ありがとうございました。
- dogs_cats
- ベストアンサー率38% (278/717)
NO1の方のコードのDebug.Print Mid(StrAsc, 2)とすると:一番最初の区切り文字が無い状態で表示されます。 ご参考まで。 Sub Example1() Dim myStr As String, StrAsc As String Dim i As Integer myStr = "abcdefg" For i = 1 To Len(myStr) StrAsc = StrAsc & ":" & Asc(Mid(myStr, i, 1)) Next i Debug.Print Mid(StrAsc, 2) End Sub
お礼
ありがとうございました。
お礼
ありがとうございました。