プロが教える店舗&オフィスのセキュリティ対策術

タイトル通りなのですが、

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)としても良いのですが、もっとスムーズな方法がありましたら、教えてください!

A 回答 (4件)

基本的に 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桁にする必要があります。

以上です。
    • good
    • 0
この回答へのお礼

さらに詳しい説明ありがとうございます。

制御する物が、00~FFしか受け付けませんので、表現としてこのようにしなくてはいけませんでした。

符号なしなので、2桁の256で制御できます。

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

お礼日時:2006/03/20 13:46

趣旨はよくわかりませんが、ヘキサを下二桁で表示したいと


いうことは、たぶん、下位8bitだけ有効で上位桁はマスク
したいということと思います。
そういうときは、

Hex(intNumber And &HFF)

ということになると思うのですが・・・
    • good
    • 0
この回答へのお礼

趣旨は、ある物の制御です。
0-5Vを00-FF間で、とあるセンサーを(5V/256)の分解能で制御しています。

センサー側が2桁しか受け取らないので、それしか必要なかったのですが、1-Fの間でも、2桁受け取りません。

256を超えるをエラーが発生させるように前段階で処理しています。

アドバイスありがとうございました。

お礼日時:2006/03/20 13:52

#2です。

大した事じゃないですが、3桁になるのは 256以上ですね。いちおう訂正しておきますm(_ _)m
    • good
    • 1

VBA2005 じゃないので、勘違いしてたらごめんなさい。


HEX(n) の時点で文字列になっているので、書式が "00" ではうまくないということだと思います。
意図するところにあっているかどうかわかりませんが
RIGHT("0"&HEX(intNUmber),2)
でどうでしょう
    • good
    • 1
この回答へのお礼

BLUEPIXYさん、ありがとうございます。
何度か質問して、いつもすぐに回答いただいております。

上の式で表現できました!

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

お礼日時:2006/03/20 13:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A