ちょっと変わったマニアな作品が集結

VBAで、小数点以下の数字を取得できる関数または、それに必要な関数を教えていただけたらと思います。たとえば、
1.325…から0.325 
3.256224から0.256224
5.23549から0.23549を取得。
といった感じです。(取得する値はdouleで桁数は不定です。)よろしくお願いいたします。

A 回答 (4件)

n - Fix(n)

    • good
    • 2

下記をやってください。

「FIX」の方に分があるのでは。マイナスの数の場合に差が出る。
(例データ)A1:A5
1.23456
2.34
-3.456
-32.12
-0.00012
(コード)
Sub test05()
For i = 1 To 5
Cells(i, "B") = Cells(i, "A") - Fix(Cells(i, "A"))
Cells(i, "C") = Cells(i, "A") - Int(Cells(i, "A"))
Next i
End Sub
(結果)
1.234560.2345600000 0.23456
2.340.340.34
-3.456-0.4560.544
-32.12-0.120.88
-0.00012-0.000120.99988
    • good
    • 2

#2の者です。



見ればわかるとは思いますが、先ほどの回答、訂正します。

(誤)Dim a As String
(正)Dim a As Double
    • good
    • 1

こんな感じでOKです。



Dim a As String

a = 1.325
MsgBox a - Int(a)
    • good
    • 1

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Q小数点を含む数値かどうか判断の判断方法

プログラム(VB.NET)初心者です。
どうぞよろしくお願いします。

テキストボックスに小数点を含んだ数値かどうかの
判断を行いたいのですが、どのようにチェックをすればいいかがわかりません。
どなたか、わかる方教えていただけたら幸いです。
サンプルソースがあると嬉しいです。
申し訳ありませんが、宜しくお願いします。

Aベストアンサー

TextBox1に入力された文字列をDecimalに変換してみて、エラーが起こるかどうかでチェックするサンプル
TextBox2にチェック結果を表示するようにしてあるが、
Flagが0以外の時エラーがあったことがわかる
------------------------------------------------------
Dim decimalVal As Decimal = 0
Dim Flag As Integer = 0

TextBox2.Text = "OK"
Try
decimalVal = System.Convert.ToDecimal(TextBox1.Text)
Catch exception As System.OverflowException
Flag = 1 'オーバーフロー
TextBox2.Text = "オーバーフロー"
Catch exception As System.FormatException
Flag = 2 '書式がおかしい
TextBox2.Text = "書式がおかしい"
Catch exception As System.ArgumentException
Flag = 3 'Null
TextBox2.Text = "未入力"
End Try

TextBox1に入力された文字列をDecimalに変換してみて、エラーが起こるかどうかでチェックするサンプル
TextBox2にチェック結果を表示するようにしてあるが、
Flagが0以外の時エラーがあったことがわかる
------------------------------------------------------
Dim decimalVal As Decimal = 0
Dim Flag As Integer = 0

TextBox2.Text = "OK"
Try
decimalVal = System.Convert.ToDecimal(TextBox1.Text)
Catch exception As System.OverflowException
Flag = 1 'オーバーフロー
TextB...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVB.NETで小数点以下の桁数を取得したい

 こんばんは。
VB.NETで1つ教えて下さい。

小数点以下の桁数を取得したいのですが
どのようにすると良いのでしょうか?

例えば
1.5なら1
2.12なら2
2.555なら3と取得したいのです。

解るかたおられましたら
ご教授、宜しくお願いします。

Aベストアンサー

小数点以下が2ケタか4ケタのどちらかっていうことなら、

Format(金額, "##0.0000") の右2文字が"00"なら削るってのでも良いのでは?

QExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法

Excelのプログラムで、テキストボックスに例えば、「10.00」や「10.50」など小数点第二位まで0であっても表示させる方法はありませんか?
あまり複雑になるようなら特に必要なプログラムではないのですが。

回答よろしくお願いします。

Aベストアンサー

値の元は何処からですか?

自分自身ですか?
値の元が違うなら、
No2さんが答えたように、

TextBox2.Text = Format(TextBox1.Text, ""#."#0")
ですが、自分自身で入力が終わってフォーカスが移動した時などなら

Private Sub TextBox1_LostFocus()
TextBox1.Text = Format(TextBox1.Text, "#.#0")
End Sub

こうすることで、出来ます。

ただし、この #.#0は、
0の場合→ .00 となり
0.567822 → .56 となります。

0の場合→ 0.00
0.567822 → 0.56 としたい場合は、
0.00を指定します。


TextBox1.Text = Format(TextBox1.Text, "0.00")

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QVBAにてデータが数字か文字かを判定するには

VBAにてデータが数字か文字かを判定するには、
どうすれば良いのでしょうか?

文字数は任意で決まっていません。


123 ← 数字
あい ← 文字
1F  ← 文字
G  ← 文字

Aベストアンサー

こんにちは。

数字か文字かなら、IsNumeric でよいと思いますが、数値か文字かでしたら、VarType を使います。私の場合は、IsNumericは、めったに使いません。VarTypeのほうが多いですね。IsNumeric は、文字通り、文字か数字かで、文字列書式の数字も含まれます。なお、VBAでは、数字は、数値型に型キャストされますので、特に問題は発生しません。

ご参考までに。

Sub Test()
 If VarType(Range("A1").Value) = vbDouble Then
  MsgBox "数値"
 ElseIf VarType(Range("A1").Value) = vbString Then
  MsgBox "文字列"
 Else
  MsgBox "その他" '代表的なものはエラー値です
 End If
End Sub

-----------------------------------------
こちらの場合は、全角数字も、数字として扱われます。

Sub Test2()
 If IsNumeric(Range("A1").Value) Then
   MsgBox "数字"
 Else
   MsgBox "数字ではない"
 End If
End Sub

こんにちは。

数字か文字かなら、IsNumeric でよいと思いますが、数値か文字かでしたら、VarType を使います。私の場合は、IsNumericは、めったに使いません。VarTypeのほうが多いですね。IsNumeric は、文字通り、文字か数字かで、文字列書式の数字も含まれます。なお、VBAでは、数字は、数値型に型キャストされますので、特に問題は発生しません。

ご参考までに。

Sub Test()
 If VarType(Range("A1").Value) = vbDouble Then
  MsgBox "数値"
 ElseIf VarType(Range("A1").Value) = vbString Th...続きを読む

Q実数の整数部,小数部の取得

OS:windows2000pro
VB:VB6.0sp5

実数 num(変数) [as currency]
 (但し 小数点以下2位まで)の値の
1.整数部 num_int(変数) [as long]
2.小数部 num_dec(変数) [as long]
を上記変数に格納するのは、どのようにすればいいのでしょうか?

(例1)num = 123.02 の場合、num_int=123, num_dec=2
(例2)num = 4.20 の場合、num_int= 4, num_dec=20
(例3)num = 0.23 の場合、num_int= 0, num_dec=23

 よろしくお願いいたします

Aベストアンサー

VB6ならこうです。
num_int = Fix(num)
num_dec = 100 * (num - num_int)

QエクセルVBA データ型 SingleとDouble

SingleとDoubleともに、整数部分の範囲についてはどのように
考えればよいのでしょうか?例えば、小数点以下4桁までを正確
に計算できれば良く、変数の値が 54321.**** となる場合は
Singleで良いのでしょうか?
SingleとDoubleで対応できる、整数部分の範囲を教えてください。
お手数ですが、よろしくお願いします。

Aベストアンサー

有効桁数で考える必要があります。Singleの有効桁数は7桁(内部的には9桁)で、負の値は -3.4028235E+38 ~ -1.401298E-45、正の値は 1.401298E-45 ~ 3.4028235E+38 の範囲の値をとります。
http://msdn2.microsoft.com/ja-jp/library/xay7978z(VS.80).aspx

54321.1234 = 5.43211234E+4
になり、有効桁数は9桁あります。この場合はDoubleでないと小数点以下7,8桁目は桁落ちします。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub


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

人気Q&Aランキング