[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.038 キャラクタコード?って何? Chr関数、Asc関数

キャラクタコード?って何? Chr関数、Asc関数

メルマガ発行内容

<キャラクタコード?って何? Chr関数、Asc関数>

こんにちは、三流プログラマーKen3です。 今回は、 キャラクタコード?です。 気楽に読んでください。 /* * 1.キャラクタコード?って何? */ 会話の中で、20(ニイマル)だったら? とか、聞いたことありませんか? 20(ニイマル)は、聞かないなぁ そうですか。 キャラクタコード or アスキーコードって聞いた事ありますか? JISコードとかじゃなくて?あっ、ユニコード?EUCコード? 難しい話に、持っていかないで下さい。 えっとですね。 キャラクタコード or アスキーコード 半角文字の文字コードって言っていいのかな。 スペースが16進で20 1 が 16進で31 A が 16進で41 ア が 16進でB1 と、1文字1文字、コードが決まってます。 だから、なに? 通常の計算は、 100-50とか、数値ですよね まぁ、そうですね。 じゃ、文字B−文字Aは(’B’−’A’) そんなのできないよ。 言い方、悪かったです。 Bの文字コード − Aの文字コードは? 1? あまり、なっとくいかないけど。 はい、正解です。 では、Aの文字コード16進で41+3は? なめんなよ、16進で44でしょ。 キャラクタコード表で16進数の44は? キャラクタコード表って、どこにあるんだよ。 オレ持ってないよ。 う〜ん、どこにあるかなぁ? じゃ調べろよ、 ~~~~~~~~~~~~ In message "[VBAで楽しく No.000] - 困った時、情報の探し方(三流君の方法)", mag2 ID 0000099159さん wrote... >私がよく使う方法は、 >http://www.google.co.jp/ >に >キーワード なんて、言ってたよねアナタは。 (詳細は http://www.ken3.org/vba/select.html の 情報の探し方三流君の方法) よし、 http://www.google.co.jp/ から、キャラクタコード表やアスキーコード表で検索すると、いろいろ出てくる。 アスキーコード表 http://hp.vector.co.jp/authors/VA008536/data/ascii.html ↑シンプルなコード表です キャラクタコード表 http://speana-1.hp.infoseek.co.jp/serial/serial_4/char.htm ↑制御コードの説明も載ってます。 こんな感じです。 で、16進44に対応する文字は、"D"です。 こんな会話やってても、意味ないので、 VBAでサンプル作りますか。 /* * 2.VBAだと? */ 例題として、 InputBoxから文字列を受け取ります その中のA〜Zをa〜zに変換して、 msgboxで表示します。 ---- Sub B0_AZtoaz_Click() Dim strMOTO As String Dim strSAKI As String Dim strCHK As String Dim nCNT As Integer Dim nSA As Integer 'ここで、文字を入れる、、 strMOTO = InputBox("A-Zを含む好きな文字列を入れてください") '入力文字数のチェック If Len(strMOTO) = 0 Then MsgBox "0文字だとテストになりませんよ、、、" Exit Sub End If '初期化です strSAKI = "" '入力された文字数分、1文字毎に処理する For nCNT = 1 To Len(strMOTO) strCHK = Mid(strMOTO, nCNT, 1) '一文字取り出す 'A-Z判断 If Asc("A") <= Asc(strCHK) And Asc(strCHK) <= Asc("Z") Then nSA = Asc(strCHK) - Asc("A") 'Aからどれだけ離れているか? strCHK = Chr(Asc("a") + nSA) 'aに求めた差を+する。aから移動 End If '結果の文字を&でプラスする strSAKI = strSAKI & strCHK Next nCNT '結果の表示 MsgBox strMOTO & vbCrLf & "から" & vbCrLf & strSAKI End Sub ---- なんか、サンプルにキレがないなぁ、、、 何か質問は? いいですか、 'ここで、文字を入れる、、 strMOTO = InputBox("A-Zを含む好きな文字列を入れてください") ってなんですか? あまり、使わないのですが、 InputBoxを使用すると、入力用のウインドウが出て、 入力された結果を返してくれます。 ここでは、任意の文字を入れさせたかったので、 使用しています。 [No.11 InputBox関数で簡単な値を受け取る] をみてください。 さらに、素朴な質問なんですが、 Len(strMOTO) , Mid(strMOTO, nCNT, 1) , Asc("A") ってなんですか?Chrって? えっとですね、 len() --> 文字数を返してくれます mid() --> mid("ABCDEFG", 2 , 3) --> 2文字目から三文字分文字を抜き出します asc() --> アスキーコードを返します chr() --> chr(&h41) --> 指定したコードの文字を返します 詳しくは、ヘルプを見るか、サンプルをいろいろ見て、なれてください。 単体は、いいから、詳しく、意味を教えてくださいよ。 '入力文字数のチェック If Len(strMOTO) = 0 Then MsgBox "0文字だとテストになりませんよ、、、" Exit Sub End If これは、inputboxで何も入力しない場合を考えて、 受け取った、文字数を調べています。 0文字の場合、メッセージを出して、終了してます。 'A-Z判断 If Asc("A") <= Asc(strCHK) And Asc(strCHK) <= Asc("Z") Then nSA = Asc(strCHK) - Asc("A") 'Aからどれだけ離れているか? strCHK = Chr(Asc("a") + nSA) 'aに求めた差を+する。aから移動 End If なんか、ごちゃごちゃ、してますね。 えっと、Ifで、コードAより大きくコードZより小さいか聞いて、 その後、−”A”をして差を求めて、”a”を+してる? *Dの時、"D"-"A" が3、、で、"a"+3、3文字分で"d"になる? なんか、よくわからないや、、 あと、 '結果の表示 MsgBox strMOTO & vbCrLf & "から" & vbCrLf & strSAKI の中の、vbCrLfってなに? 結果を改行させたいので、使ってます。 試しに MsgBox "A" & vbCrLf & "B" とやってみてください。 1つ言っていい どうぞ。 strconv("ABCDEFG", vbLowerCase) 有名な標準関数で、できるんじゃない。。。 そうだけど、説明したかったの、、、 strMOTO = InputBox("好きな文字列を入れてください") MsgBox strMOTO & vbCrLf & "から" & vbCrLf & strconv(strMOTO, vbLowerCase) じゃ、コードの説明にならないでしょ、、、 /* * 3.ダブルコーテーションで説明無く使ってましたね。 */ [No.31 Write #で ””を付けた書き込み] でも、 In message "[VBAで楽しく No.031] - Write #で ””を付けた書き込み", >イ.キャラクタコードを指定して >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >そんな変な書き方はイヤなので(ウソ付け、よく使ってるくせに(笑))、 > > Sub test031_2() > Dim strMOJI As String '表示テスト用 > strMOJI = Chr(34) & "なんだかなぁ〜" & Chr(34) > MsgBox strMOJI 'メッセージボックスでテスト表示 > End Sub > >と、Chr関数を使用して、 >ダブルコーテーションの文字コード34を渡してといった方法もあります。 > >ウ.16進数で少しはカッコよくなるかなぁ? >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >上と同じなんだけど、&HXXで16進数にしてみました。 >(どちらかと言えば、16進のほうが多いかなぁコード表も16進だし) > Sub test031_3() > Dim strMOJI As String '表示テスト用 > '&Hで16進数、知ってましたか? > strMOJI = Chr(&H22) & "なんだかなぁ〜" & Chr(&H22) > MsgBox strMOJI 'メッセージボックスでテスト表示 > End Sub ここでは、”を表したかったので、 Chr(&H22) を使ってました。 キャラクタコードの説明が無く、少しわかりにくかったと思います。 /* * 4.おわりの挨拶 */ 今回は、 キャラクタコードの説明と、 strconv("ABCDEFG", vbLowerCase) の内部の動きとは、違うと思いますが、 1つの関数でできてることが、 実際は、いろいろな組み合わせで 動いているんだぁ、、、と少しでも感じてもらえばOKかなぁ。 画像は今回無しで(え〜、手抜きもしかして?) サンプルファイルは、 http://www.ken3.org/vba/lzh/vba038.lzh に test038-book.xlsが保存されています。 たった1つのプログラムしか無いけど。 なかなか、説明、難しい、、と思いつつ、今回も軽めにサヨナラです。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]