下記のような感じで、テストしました。
/* * 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つの関数でできてることが、 実際は、いろいろな組み合わせで 動いているんだなぁ、、、ていどに思っていただければ、、、 今回の講座は、成功かなぁ? なかなか、説明、難しい、、と思いつつ、今回も軽めにサヨナラです。
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 ※種類が豊富で探し易い※在庫ありが48時間以内発送 |