ASCIIコードについて

このQ&Aのポイント
  • VB6の質問です。ASCIIコードの定義がわかりません。
  • Record変数にASCIIコードを含んだ文字列が入ります。各条件で処理をしたいのですが。
  • 「(STX)」「(ACK)」「(EOT)」に対応するASCIIコードが知りたいです。
回答を見る
  • ベストアンサー

ASCIIコードについて

VB6の質問です。 ↓例で、Record変数にASCIIコードを含んだ文字列が入ります。 Select文で各条件で、処理をしたいのですがASCIIコードの定義がわかりません。 ご教授していただないでしょか? Dim Record As String Private Sub test() ・ ・ Record = (STX)1234(ACK)5678(EOT)  ・ End Sub Select Record Case "(STX)" ← 'Case 02H?? ・ Case "(ACK)" ← 'Case 06H??  ・ Case "(EOT)" ← 'Case 03H?? ・ Case Else End Select

noname#187796
noname#187796

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.1

Record文字列の指定した文字位置からの文字1文字をMid関数で取り出し、それをAsc関数に指定すれば、指定した位置の文字コードが数値で取得できる。 Select Asc(Mid(Record,文字位置,1)) Case &H0 'NUL ・ Case &H1 'SOH ・ Case &H2 'STX ・ Case &H3 'ETX ・ Case &H4 'EOT ・ Case &H5 'ENQ ・ Case &H6 'ACK ・ Case &H7 'BEL ・ Case &H8 'BS ・ Case &H9 'HT/TAB ・ Case &HA 'LF/NL ・ Case &HB 'VT ・ Case &HC 'NP ・ Case &HD 'CR ・ Case &HE 'SO ・ Case &HF 'SI ・ Case &H10 'DLE ・ Case &H11 'DC1 ・ Case &H12 'DC2 ・ Case &H13 'DC3 ・ Case &H14 'DC4 ・ Case &H15 'NAK ・ Case &H16 'SYN ・ Case &H17 'ETB ・ Case &H18 'CAN ・ Case &H19 'EM ・ Case &H1A 'SUB ・ Case &H1B 'ESC ・ Case &H1C 'FS ・ Case &H1D 'GS ・ Case &H1E 'RS ・ Case &H1F 'US ・ Case Else ・ End Select で良い。 文字位置を1から文字の長さまでループさせれば、すべての文字を処理できるでしょう。 因みに、EOTは&H3ではなく&H4ですよ。

noname#187796
質問者

お礼

ありがとうございました。

関連するQ&A

  • Functionの使い方が分かりません。

    ACCESS 2013環境でVBAを使用しています。 プログラムが長い上、使用する箇所が多くて困っています。 Functionで、使いたい時だけ呼び出したいのですが うまく行きません。 二つのテキストボックスに入力された、文字を組み合わせて 文字列を生成するプロシージャを作成しています。  txt1の値が、岡山  txt2の値が、オカヤマ の時 先頭の文字列が ア行、続きは _岡山 となるよう AscW関数で文字コードで一度抽出し, select文で判別しています。 コードは --------------------------------------------- Private Sub コマンド1_Click() Dim kanji As String Dim katakana As Integer Dim sento As String Dim hensuu As String kanji = Me.txt1 katakana = AscW(Left(Me.txt2,1)) Select Case katakana Case 12450 To 12458 sento = "ア行" Case 12459 To 12468 sento = "カ行" ~(中略)~    Case Else End Select hensuu = sento & "_" & kanji MsgBox hensuu End Sub --------------------------------------------- となっています。 Select Case文が長いのと、複数のフォーム上で実行させるボタンごとに 同じコードを記述していて、最近Accessの起動が遅くなってきました。 Select文をFunctionから呼び出し、最終的にはモジュールから呼び出しに 書き換えたいのですが、書き方が良く分かりません。 試したコード --------------------------------------------- Function moji(ByRef katakana As Integer,sento As String) Select Case katakana Case 12450 To 12458 sento = "ア行" Case 12459 To 12468 sento = "カ行" ~(中略)~    Case Else End Select End Function Private Sub コマンド1_Click() Dim kanji As String Dim katakana As Integer Dim sento As String Dim hensuu As String kanji = Me.txt1 katakana = AscW(Left(Me.txt2,1)) sento = moji(katakana) hensuu = sento & "_" & kanji MsgBox hensuu End Sub --------------------------------------------- 多分、大きく間違っているのではないかと思うのですが どのように修正したらよいでしょうか

  • Excel VBAで変数が定義されていません。

    このシートコードで「変数が定義されていません。」となります。どうすればいいでしょうか。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Address Case "$C$10:$C$13" SendKeys "%{DOWN}" Case "$H$10:$H$13" SendKeys "%{DOWN}" Case Else Exit Sub End Select Cancel = True End Sub

  • レコード件数が返らない理由がわからない

    テーブル1にはレコードが5件入ってるのですが Private Sub レコード件数() Dim strSQL As String Dim rs As DAO.Recordset strSQL = "SELECT * FROM テーブル1;" Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) Debug.Print rs.RecordCount End Sub これをすると1が返るのですがなぜでしょうか? レコードの数が返ると思ってるのですが違うのでしょうか?

  • VBAでFunctionの使い方

    エクセルのVBAでFunctionの使い方がいまいちよくわかりません。 Function msg() Dim h As Integer h = Hour(Time) Select Case h Case Is < 12: msg = "おはようございます。" Case Is < 17: msg = "こんにちは。" Case Else: msg = "こんばんは。" End Select End Function Sub 挨拶() MsgBox msg End Sub とやってみたら一応正しく動くようですが、これであっているのでしょうか? 他の例などを見るとFunction msg()の()内にも何か入れなければならないようなのですが、わかりません。

  • VBAのプロシージャについて質問です

    以下にA、B2つのプロシージャを書きます。 A  Sub kubun( ) Dim taipu As String Select Case Range("C27").Value Case 100,110,120 taipu="乗用車" Case 201,211,221 taipu="RV・4WD" Case 300,305,310 taipu="スポーツカー" Case Else taipu="正しいコードを入力してください" End Select MsbBox taipu ←←←← End Sub B  Sub iro( ) Select Case Range("C34").Value Case "RED" Range("C34").Font.ColorIndex=3 Case "BLUE" Range("C34").Font.ColorIndex=5 Case "PINK" Range("C34").Font.ColorIndex=7 Case "GREEN" Range("C34").Font.ColorIndex=10 Case Else MsbBox "RED,BLUE,PINK,GREENのいずれかを入力してください"←←←←     End Select End Sub A,Bの←←←←の部分ですが、End Selectの前に入れるか、 後ろに入れるかはどうやって決めるのですか。 こういう場合は前に入れる、こういう場合は後ろに入れるといった 決めごとを教えてください。 宜しくお願いいたします。

  • このコードが、うまく実行できません!

    下記の実行後のようにしたのですが、うまく出来ません、 何卒、ご教示くださいませ。 EXEL 2002 です。 ------------------------------------ Sub 数に対してマークを付ける() Dim c As Range Workbooks(1)..Sheets(1).AutoFilter.Range.Cells(1, 5).Select For Each c In Range(Selection, Sheets(1).AutoFilter.Range.Cells(1, 5).End(xlDown)).Select Select Case c.Value Case Is = 0 c.Offset(0, -3).Value = "×" Case Is = 1 c.Offset(0, -3).Value = "△" Case Is = 2 c.Offset(0, -3).Value = "○" Case Else MsgBox "対象の数字がありません" End Select Next End Sub --実行前-------------------  A B C D E F G H 1 ・ ・ ・▼▼▼▼▼▼▼▼←オートフィルターのマーク ・       0 ・       2  ・       1 ・       0 50 ・ --実行後------------------  A B C D E F G H 1 ・ ・   ・▼▼▼▼▼▼▼▼←オートフィルターのマーク ・  ×    0 ・  ○    2  ・  △    1 ・  ×    0 50 ・ ---------- よろしくお願い致します。

  • フィールド内の各レコードの値によってセルを塗り分ける方法

    私の質問を拝読いただき、ありがとうございます。 マトリックス形式のデータがワークシートに埋め込まれています。 特定のフィールドに入っている各レコードのデータをエクセルで検査するマクロを作ろうとしています。 検査方法としては、一定量以上の文字列が入っているセルを特定の色で塗るというものです。 (条件付書式でも同じことが可能ですが、操作の関係上、マクロで実現したいものです。) 次のようなコードを実行すると、各セル内の文字量が80文字を超えていようがいまいが、 B列の全てのセルがcolor=7で塗りつぶされてしまいます。 ------------------------------------ Private Sub 検査() Dim objColumn As String Dim objCell As Range Dim mojiByt As Integer i = 2 objColumn = Columns(i).Address For Each objCell In Range(objColumn) With objCell mojiByt = LenB(.Value) Select Case mojiByt Case Is > 80 .Interior.Color = 7 Case Else .Interior.Color = xlNone End Select End With Next End Sub ------------------------------------ このコードのエラーをご指摘いただきますと幸いです。 よろしくお願い致します。

  • select case 大文字小文字を区別しないよ

    select case 大文字小文字を区別しないようにするには? Sub test01() Dim str As String str = "A" Select Case str Case "a" MsgBox "aです" Case "A" MsgBox "aです" End Select End Sub これだと、半角全角がヒットしないのはなんとなくしょうがないかな、と思うのですが 大文字小文字がちがくてもヒットさせるにはどうすればいいですか? Sub test01() Dim str As String str = "A" Select Case str Case "a", "A" MsgBox "aです" End Select End Sub とするしかないでしょうか? 大文字小文字区別なく評価する方法があれば教えてください。よろしくお願いします。

  • excel VBA のエラー回避のアドバイス依頼

    いつもお世話になります。 EXCEL2000のVBAで、エラーになった場合の修正(回避コード)を教えていただきたくよろしくお願いいたします。 ここでは、とあるブックのSheet1のH25セルに写真のファイル名を入れます。そして、実際の写真を ブックが保管してあるフォルダ内のboard_image というフォルダに入れて、マクロを実行すると、C26セルに写真が表示されるというものですが。 ここで、C26セルが空白だと「実行時エラー'1004!; 指定したファイルが見つかりませんでした。」と言われます。 これを回避して、「NoImage.jpg」という名前の写真を表示させるようにしたいです。 アドバイスお願いします。 '■↓コードは下記です。 Private Sub Worksheet_Change(ByVal Target As Range) Dim fRange As Range Dim touroku As Long Select Case Target.Address Case "$H$25" myLoadPicture "board_Image", Target.Text, Range("C26") Case Else Exit Sub End Select End Sub Private Sub myLoadPicture(folderName As String, fname As String, targetRange As Range) Dim pict As Shape, picPath As String picPath = ThisWorkbook.Path & "\" & folderName & "\" & fname If Dir(picPath) = "" Then picPath = ThisWorkbook.Path & "\" & folderName & "\" & "NoImage.jpg" End If With ActiveSheet For Each pict In .Shapes If pict.TopLeftCell.Address = targetRange.Address Then pict.Delete Exit For End If Next pict Set pict = .Shapes.AddPicture(picPath, msoTrue, msoFalse, _ targetRange.Left, targetRange.Top, 300, 360) End With End Sub

  • Excel VBA Application.caller エラー2023について

    表題 コマンドボタンを押し自分自身のオブジェクト名を取得したいと考えております。 下記、コードにて試したところエラー2023が表示され所望の動作が確認できません。どなたかお分かりの方がいらっしゃいましたらご教授いただければ幸いです。 Private Sub CommandButton1_Click() Select Case TypeName(Application.Caller)   Case "Range"     v = Application.Caller.Address   Case "String"     v = Application.Caller   Case "Error"     v = "エラー"   Case Else     v = "不明です" End Select MsgBox "Visual Basic を呼び出した方法 = " & v End sub

専門家に質問してみよう