タイトル通りなのですが、
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)
-
EXCELでの16進数取り出し、上位桁と下位桁取り
Excel(エクセル)
-
VBAのバイナリ出力について
Visual Basic(VBA)
-
-
4
16進数の変換処理
Visual Basic(VBA)
-
5
Excelで16進数の計算
Excel(エクセル)
-
6
VB.NETで16進数+16進数や16進数*nをやる方法
Visual Basic(VBA)
-
7
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
8
バイト型のデータを16進表記でファイルに書き込むには?
Visual Basic(VBA)
-
9
16進コード文字列を文字列に変換
Visual Basic(VBA)
-
10
VBA バイナリ―から文字列にする方法
Visual Basic(VBA)
-
11
セル列のすべての文字列の頭に”0x”を追加したい
その他(Microsoft Office)
-
12
byte型をstring型として扱うには
Visual Basic(VBA)
-
13
EXCEL16進⇒浮動小数変換したい
Excel(エクセル)
-
14
【エクセル】16進数の文字列を2桁ずつ区切りたい。
Excel(エクセル)
-
15
EXCEL VBAで、PnPでCOMポート番号取得
Visual Basic(VBA)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
18
VBでバイナリデータについて。
Visual Basic(VBA)
-
19
Excel 16進数
Excel(エクセル)
-
20
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
エクセルでアルファベットか数...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
sedなどで、特定の文字列の後の...
-
C言語で文字列の中の文字列のカ...
-
Left関数とRight関数を合わせた...
-
アクセスで特定の数字以外(複...
-
Excelで3E8を3.00E+8にしない方...
-
【Excel VBA】複数ある特定の文...
-
マクロ処理でのループの記述に...
-
VBA2005 16進を2桁で表示したい。
-
Excelで偶数行だけ文字列を数え...
-
VBScript 数値の少数化
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列の最大値を抽...
-
StringGridで選択した箇所の文...
-
textboxユーザーコントロールの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
[C言語]fputsとfprintfの違い
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列の最大値を抽...
-
Excelはなんで先頭の0を消すん...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Left関数とRight関数を合わせた...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
sedなどで、特定の文字列の後の...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
おすすめ情報