
タイトル通りなのですが、
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
16進の10進変換について
Visual Basic(VBA)
-
16進数の変換処理
Visual Basic(VBA)
-
HEX2BIN関数の使い方。
Excel(エクセル)
-
-
4
EXCELでの16進数取り出し、上位桁と下位桁取り
Excel(エクセル)
-
5
16進数を10進数に変換する方法...
Visual Basic(VBA)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
エクセルで16進数を2進数に変換した際に頭の0を表示させる方法は?
その他(教育・科学・学問)
-
8
セル列のすべての文字列の頭に”0x”を追加したい
その他(Microsoft Office)
-
9
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
10
VBで構造体の配列を関数に渡す方法?
Visual Basic(VBA)
-
11
VBAでFormat がうまく使えない
Excel(エクセル)
-
12
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
13
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
14
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
15
VB(VBA)で、バイナリデータを使ってテキストファイルを作成したいの
Visual Basic(VBA)
-
16
EXCEL VBAで、PnPでCOMポート番号取得
Visual Basic(VBA)
-
17
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
18
教えてくださいエクセルセルの表示に関して
その他(コンピューター・テクノロジー)
-
19
Excelでバイナリデータを処理するには?
Excel(エクセル)
-
20
エクセルvbaで転記したのですが、数字のゼロが消えてしまいます。 ゼロも転記するためにはどうしたらい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
文字列からタブコードを取り除...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
VBAを使って選択した範囲の数字...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
最も多い文字列を検索するには
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
ORCLEでの小数の表示方法の変更...
-
エクセル 数値データを桁をそ...
-
LEFT関数で文字数を指定しない...
-
エクセルで文字列の最大値を抽...
-
SQL の Update文(?) と ...
-
VBの「As String * 128」とは?
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
-
MS SQLServer のSQLで文字列の...
-
Excelで指数表現しないようにす...
-
ORCLEでの小数の表示方法の変更...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
SQL の Update文(?) と ...
-
VBの「As String * 128」とは?
-
aaa.bbb.ccc という、「ドット...
-
同一セル内に関数と文字列を同...
おすすめ情報