三流君の [コンビニ系HPへ] [VBA系HPへ] [ASP系HPへ] [愚痴系HPへ]

Access/Excel VBA 文字コード Asc関数、Chr関数

実物を確認したい方は、→code.lzh 19KB をダウンロードして、見てください。
それと、関連項目は
[ キャラクタコード、文字列のバイト数を数えてみる]
[ SJISからJISのコード変換]
も、あわせてみてください。
下記のような感じで、テストしました。





/* * 2.キャラクタコード?って何? */ 会話の中で、20(ニイマル)だったら? とか、聞いたことありませんか? Nullだったらは、よく聞くけど、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は? キャラクタコード表って、どこにあるんだよ。 オレ持ってないよ。 う〜ん、どこにあるかなぁ? まぁ、いいや、16進44に対応する文字は、"D"です。 こんな会話やってても、意味ないので、 Access VBAでサンプル作ります。 /* * 3.VBAだと? */ 例題として、 InputBoxから文字列を受け取ります その中のA〜Zをa〜zに変換して、 msgboxで表示します。 ---- Private 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("好きな文字列を入れてください") '入力文字数のチェック 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("好きな文字列を入れてください") ってなんですか? あまり、使わないのですが、 InputBoxを使用すると、入力用のウインドウが出て、 入力された結果を返してくれます。 ここでは、任意の文字を入れさせたかったので、 使用しています。 Accessだとフォームのme!DATA とかでもOKです。 素朴な質問なんですが、 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) じゃ、コードの説明にならないでしょ、、、 /* * 4.おわりの挨拶 */ strconv("ABCDEFG", vbLowerCase) の内部の動きとは、違うと思いますが、 1つの関数でできてることが、 実際は、いろいろな組み合わせで 動いているんだなぁ、、、ていどに思っていただければ、、、 今回の講座は、成功かなぁ? なかなか、説明、難しい、、と思いつつ、今回も軽めにサヨナラです。


質問や要望、クレームを送る(三流君に連絡する 連絡方法)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい

(感想や質問・要望・苦情はHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。

番外編 愚痴系で書いてた今日の一品 (短いサブ関数など)

2000/05/13 SQL Count関数を使ってみる
2000/05/11 Access97 標準関数Midなどが使えない
2000/05/09 SendObjectのエンコード
2000/05/08 クエリーで〜以外とは
2000/04/27 Imagingコントロールを使ってみた
2000/04/25 Excel97 VBA イベントなど
2000/04/24 Access97で複数のプリンタを切替えて使用
2000/04/20 書式付きエクスポート DoCmd.OutputToで、できます
2000/04/19 Access97でExcel形式へExport時に書式設定を行いたい
2000/04/13 Access97でOutlook97/98とリンクする方法
2000/04/13 VBA Nameステートメント
2000/04/04 Accessでキー取得
2000/04/04 AccessでFile参照ダイアログ?
2000/04/03 縦書用数値変換改良
2000/04/01 Access Err テーブルを消したい
2000/03/31 縦書き数値、どうしてますか?
2000/03/29 VBA 手抜きで、処理後、explorerを開く
2000/03/28 Access --> Word へデータ
2000/03/24 名前一覧Excelの機能で、同じことできました
2000/03/23 Excel97 VBA セルに付けた名前一覧を作成する
2000/03/21 Excel セルに名前付け
2000/02/25 iniFileを読む GetPrivateProfileString
2000/02/15 Excel VBA Rangeオブジェクトとサンプル
2000/02/14 Access97 SizeMode/OLEサイズ で画像調整
2000/02/10 Access97 Pictureプロパティとサンプル
2000/02/09 Access97 集計クエリーで重複値をハジク
2000/02/07 Access97 サブフォームへ値をセット
2000/02/04 Access97 コントロールソース、チョットした使用法
2000/02/01 Access97 フォームフッター
2000/01/18 Access97 now()関数で有効期限処理、、、

←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 種類が豊富で探し易い※在庫ありが48時間以内発送


[三流君(TOP)]へ戻る。