• ベストアンサー

〔EXCEL:VBA〕切捨ての関数は?

初歩的な質問で申しわけありません。 例えば、ある計算結果を「変数:x」に格納して、この「x」の値を切り捨てるにはどのような記述になりますでしょうか?簡単なプロシージャで教えてください。 ------------------------ Sub 切捨て計算() x = 100 / 3 〔変数:xの切捨て〕 MsgBox "変数xは:" & x End Sub ------------------------- 〔 〕内を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

x=int(x) か x=fix(x) 正数だけ扱うなら、どっちでも一緒ですが…

shunshun-dash
質問者

お礼

ありがとうございます。切捨てなどのVBA関数は初めて使うので参考になりました。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

Dim x As Integer と変数宣言するだけでも正数値を得られます。 下記のような式もあります。 x = 100 \ 3

shunshun-dash
質問者

お礼

整数宣言するとエラーが返されるかと思い込んでいました。参考になりました。

関連するQ&A

  • 【Excel:VBA】千円未満切捨ての方法

    1000未満切捨てのVBA関数はどの関数を使いどのように引数を指定すればよいのかわかりません。 ------------------------------- Sub 切捨て() Dim x As Integer x = 123456 〔切捨て関数〕 MsgBox x End Sub -------------------------------- この状態で、メッセージボックスに「123000」の値が表示されるようにできないでしょうか? 小数点以下を切り捨てるには x = Int(x) だとわかったのですが、この関数に千未満切捨てなどを指定する引数はあるのでしょうか?

  • excel/vba/public変数

    excel VBAで下記のようなコードを書きました。 他のプロシージャでも共通の変数を使用したいと思っています。 その為、public変数を宣言して使用したいと設定しましたが。 うまくいきません。 testmainを実行し、iに何も入っていないことを確認しました。 その後『1』を代入し、testmainは終了します。 testsubをその後実行し、iに先ほど代入された値を確認しようとしても何も代入されていない状態です。 全プロシージャでその変数を使用したいと思っているのですが、 何か方法、もしくはこのような使用方法ではないのでしょうか? public変数を使用してもプロシージャが終了すれば変数はクリアされるのでしょうか? 構造化の方法の問題上参照渡しや、戻り値など、指定する方が複雑になっていきます。 ご指導よろしくおねがいします。 Public i As Variant Sub testmain() MsgBox test i = 1 End Sub Sub testsub() MsgBox i End Sub

  • access vbaで、変数を含んだプロシージャ

    access vbaで、変数を含んだプロシージャを実行したい。 【やりたい事】 下記の矢印の部分で「msg1」「msg2」「msg3」を実行したい。 Public Sub test() For i = 1 To 3 msg & i ←ここを、どのように記述すればいいのでしょうか? Next End Sub Public Sub msg1() MsgBox "ok1" End Sub Public Sub msg2() MsgBox "ok2" End Sub PublicSub msg3() MsgBox "ok3" End Sub よろしくお願いします。

  • 【VBA】値の引渡しについて

    VBA初心者です。 VBAの勉強もかねて、今、【 標準モジュール 】と【 UserForm 】を用いて あるプログラムを作っています。 その中で、プロシージャ間をまたいで 『 値の受け渡し 』をしたいと思っています。 今回、質問をさせていただいたのは、その『 値の受け渡し 』が 「できる場合」と「できない場合」があるので、常にできるように その対応方法を教えていただきたく、今回投稿させていただきました。 ---------------------------------------------------------------- 今困っているパターンを例にあげると、 ユーザフォームの中に2つのボタン 「OK」ボタンと「キャンセル」ボタンが あるとします。 【 「キャンセル」ボタンがおされた場合には「終了する」 】という 仕組みにしたいと思っています。 そこで以下のようなプログラムを作ろうとしました。 ---------------------------------------------------------------- ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1) General部にPublic変数(以下「P変数」)を宣言する。      Public cancel as byte 2) 【標準モジュール】のプロシージャから【フォーム】の「Userform1」を表示させる。          Sub A処理()           Userform1.show           End sub   3) 【フォーム】のUserform1._CommandButton2に以下のように記述する。    (キャンセルボタンがクリックされた場合)          Private Sub CommandButton2_Click()       cancel = False       Unload Me       Exit Sub      End Sub 4) 【標準モジュール】のプロシージャの、一連の処理の最後に    以下のようにプログラムを記述する。          Sub A処理()           Userform1.show      ↓      ↓           if cancel = false then                exit sub           end if      End sub ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1)~4)のようにして 「キャンセルがクリックされた場合、すべての処理を終了する。」 というようなプログラムを記述してみました。 すると、デバッグを使って、変数「cancel」の中身を見てみると 3)の段階で、その変数「cancel」に「false」値を格納したはずなのに、 プロシージャ間をまたいだことで 4)の段階では、変数「cancel」の中身が必ず「""」と 値が空値になってしまいます。 4)の段階でも、変数「cancel」の値が保持できる、 何かしらの方法はないでしょうか。 回答をよろしくお願いします。

  • EXCEL 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の値を四捨五入したいです。 またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

  • 一番大きな値を返す

    はじめまして。ExcelVBAで「一番大きな値を持つ変数名を返す」として質問致します。 タイトルは「…値を返す」としましたが、実は「…値を持つ変数名を返す」なのです。以下に要点を記します。 例えば… Sub mySub() Dim my1,my2,my3,myMax '全てInteger型です。 my1=1 my2=2 my3=3 myMax=Application.WorksheetFunction.Max(my1,my2,my3) MsgBox=myMax End Sub 上の記述ですと、MsgBox に渡される値は my3 に格納されている 3 となりますが、Max値である 3 の値が格納されている変数名my3 を MsgBox に表示させるためには、どのような考え方があるでしょうか? If や Select Case などでコツコツと条件分岐をさせて導き出すしか方法はありませんか? コードが短くなるように何らかの関数を用いる手法があれば嬉しいのですが…ご教示の程、よろしくお願い致します。

  • VBAのプロシージャのことで

    TEST1のプロシージャ内に使用している readfileという変数の中にテストという文字列を代入し、 文字列が代入された状態で Callによって別のプロシージャを読みにいったとき TEST(変数)に入った文字列ごと持っていくには どの様に記述すればよいかどなたか教えていただけませんでしょうか・・・。。 ----------------------------------------------------------- Sub TEST () Dim readfile As String readfile = "テスト" Call TEST2 End Sub ----------------------------------------------------------- Sub TEST2() readfile ←テストという文字列をTESTプロシージャから持ってきたい End Sub ----------------------------------------------------------- 単純に書いてみたコードですが、この様なことは可能なのでしょうか? すいませんがいただけないでしょうか><;

  • Excel2000のVBAでわからないことがあります。

    こんなものを作ってみました。 Sub 理想体重() Dim Sin As Long Dim Tai As Long Sin = InputBox("あなたの体重は?", "体重") Tai = InputBox("あなたの身長は?", "身長") If Tai >= Sin * Sin * 21 / 10000 + 3 Then MsgBox "太りすぎです" ElseIf Tai <= Sin * Sin * 21 / 10000 - 3 Then MsgBox ("痩せすぎです") Else MsgBox ("標準です") End If End Sub 結果はきちんと出てくるのですが、最初の変数宣言のところがわかりません。 最初は、Longではなく、Integerにしたのですが、オーバーフローのエラーが出たので、Longに変更したところ、きちんと出てくるようになりました。 しかし、なぜ、Integerではだめなのかがわかりません。私としては、Integerは32,767までの数字が入るのだから、身長や体重を入れたぐらいだと、オーバーフローにはならないのではないかと考えています。 きっと、根本的なものがわかっていないんだとは思うのですが、違いを教えていただければうれしいです。 よろしくお願いいたします。 (VBAを勉強したばかりです。)

  • EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

    Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

  • VBAでの戻り値と引数について

    最近VBAでプログラムを勉強しています。 引数と戻り値について教えてください。 定義としては、 引数:プロシージャに渡される定数、変数、および式。 戻り値:呼び出し元に処理の結果を戻す値。 となっているのですがいまいちピンときません。 SubプロシージャとFunctionプロシージャでその違いがあると思うのですが、具体的にどれが引数でどれが戻り値なのかわかりません。 他のプログラミングも全く経験がない初心者で初歩的な質問ですみませんがご教授お願いします。

専門家に質問してみよう