
タイトル通りなのですが、
If shtDiff > 1 Then
intNumber = intNumber + 1
ElseIf shtDiff < 1 Then
intNumber = intNumber - 1
End If
intNumberの所に-1が入っているのを確認した後、
strNumber = Format(Hex(intNumber), "00")
とすると表記が"00"になります。
恐らくここの書き方が悪いのだと思うのですが、
Hex(number)だけだと
-1が"FFFF"
-2が"FFFE"になっているのは確認できたのですが、、、
Mid(number,1,2)としても良いのですが、もっとスムーズな方法がありましたら、教えてください!
No.2ベストアンサー
- 回答日時:
基本的に HEXステートメントは16進数値を返しますが、桁数を揃える機能はありません。
なので1~15であれば HEX(10) などとすると A のように一桁で帰ってきてしまいますし、257以上の数値を入れれば3桁になります。
またHEXステートメントで返されるのは文字列(正確にはバリアント型)なので、FORMAT文では正常にフォーマットする事は出来ません。
従って常に二桁に桁数を揃えるのであれば
RIGHT("0" & HEX(intNumber),2)
とかきます。4桁であれば RIGHT("000" & HEX(intNumber),4)です。
なお例題の Format(Hex(intNumber), "00") ですと、10~15の値は一桁にしかなりません。
この書き方で二桁になっている様に見えるのは、
HEX(intNum)→0~FFFFの文字列(バリアント型)を返す → A~Fが含まれていない場合は数値として扱えるので、数値に暗黙のキャストをする → FORMATで桁数を合わせる
という流れになっているからです。
従いましてA~Fが含まれている場合は文字列扱いなので、FORMAT文はきいていないことになります。
ただ私はVBA2005で確認した訳ではないのですが、VB系の動作ですと -1 をその書式で実行すると普通はFFFFと返ってくる気がしますね……。
さてVBのiniで表現出来る値は16ビットです。
従いまして -1 を記載した場合 ビット表記すると 1111111111111111 …… という訳で FFFFになります。
これを強制的に二桁に合わせてしまうとFF ですが、これですと255(FF)との区別がつきません。
従いましてマイナスを表記するなら最低4桁にする必要があります。
以上です。
さらに詳しい説明ありがとうございます。
制御する物が、00~FFしか受け付けませんので、表現としてこのようにしなくてはいけませんでした。
符号なしなので、2桁の256で制御できます。
ありがとうございました。
No.4
- 回答日時:
趣旨はよくわかりませんが、ヘキサを下二桁で表示したいと
いうことは、たぶん、下位8bitだけ有効で上位桁はマスク
したいということと思います。
そういうときは、
Hex(intNumber And &HFF)
ということになると思うのですが・・・
趣旨は、ある物の制御です。
0-5Vを00-FF間で、とあるセンサーを(5V/256)の分解能で制御しています。
センサー側が2桁しか受け取らないので、それしか必要なかったのですが、1-Fの間でも、2桁受け取りません。
256を超えるをエラーが発生させるように前段階で処理しています。
アドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
-
16進の10進変換について
Visual Basic(VBA)
-
16進数の変換処理
Visual Basic(VBA)
-
HEX2BIN関数の使い方。
Excel(エクセル)
-
-
4
エクセルで16進数を2進数に変換した際に頭の0を表示させる方法は?
その他(教育・科学・学問)
-
5
EXCELでの16進数取り出し、上位桁と下位桁取り
Excel(エクセル)
-
6
16進数を10進数に変換する方法...
Visual Basic(VBA)
-
7
セル列のすべての文字列の頭に”0x”を追加したい
その他(Microsoft Office)
-
8
VBAのバイナリ出力について
Visual Basic(VBA)
-
9
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
10
VBA:小数点以下の数字を取得できる関数は?
Visual Basic(VBA)
-
11
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
Excel 16進数
Excel(エクセル)
-
14
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
15
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
16
VB(VBA)で、バイナリデータを使ってテキストファイルを作成したいの
Visual Basic(VBA)
-
17
エクセルのシート連番の振り直し
Excel(エクセル)
-
18
[VBS] 16進数でバイナリファイル出力したい
Visual Basic(VBA)
-
19
EXCEL VBAで、PnPでCOMポート番号取得
Visual Basic(VBA)
-
20
教えてくださいエクセルセルの表示に関して
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
Excelで3E8を3.00E+8にしない方...
-
SQL の Update文(?) と ...
-
文字列から文字列を検索するプ...
-
ExcelでA1=1973を小さい数順に...
-
Pro c/c++ でホスト変数の後に....
-
初歩的で申し訳ないですが…ADO...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
エクセル 数値データを桁をそ...
-
16進数を10進数に簡単に変換す...
-
【excel】複数のセルを対象に特...
-
【Excel VBA】複数ある特定の文...
-
ORCLEでの小数の表示方法の変更...
-
【Teratermマクロ】文字列の分...
-
MS SQLServer のSQLで文字列の...
-
Excel COUNTIF の仕様について
-
LEFT関数で文字数を指定しない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
Excelで3E8を3.00E+8にしない方...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
VBの「As String * 128」とは?
-
エクセルでセル内の文字列の最...
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
-
LEFT関数で文字数を指定しない...
-
アクセスで特定の数字以外(複...
おすすめ情報