• ベストアンサー

エクセルVBAについて

pen_pen_penの回答

  • ベストアンサー
回答No.7

>この作業を実行するとTextBox6に1文字(数字1桁)を入力するとプログラムの実行が中止になり、TextBox16の計算が実行されず、計算結果を確認できませんが・・・。 そうです。なので、「コマンドボタンを押す前に」と前置きしてみました。 まずは普通に実行。TextBox6に入力して、TextBox16に結果が表示されますよね? それまではいいんです。 いざコマンドボタンを押そうという直前に、ブレークポイントを入れて下さい。 それから、また実行してるフォームに戻ってコマンドボタンを押せばそこで止まります。 それで値を確認してください。ウォッチウィンドウに変数をドラッグするとか。変数の上にマウスを持ってくと見れるかもしれません。 次に、お願い事項Cの話。TextBox6_Changeに、 ~省略~ Aone = Val(TextBox6.Text) If Aone <= 0 Then Exit Sub '☆これを追加 DtyA = Ahlebel / Aone * 100 ~省略~ こんな感じで☆部分を一行追加して実行してください。 お願いしたA,Bの結果からするとコマンドボタン以外にもTextBox6を書き換えるイベントがあるようですね。 各お願いの目的は・・・ Aは、一連のクリア操作を一切やめているのでTextBox6を書き換える処理が無くなる。つまりTextBox6_Changeを実行しないので、オーバーフローは起きません。 BはTextBox6を操作してるイベントがコマンドボタンの他に無ければ、オーバーフローは起きないハズだったのです。 でも起きたので、どこかで書き換えていると思われます。その処理が問題というか、要因みたいですね。どこでどう書き換えてるのか調べて下さい。 イベントは、ユーザーがキーボードなどで入力する場合以外にもコードで TextBox6.Text = "" と書いた場合にもChangeイベントが発生します。 つまり、コマンドボタンのイベント中でTextBoxをクリアするという事は、TextBox6_Changeが実行されます。 当然そうするとAoneは0になり0割りが出ると思ったのです。 で、今回はTextBox6をクリアする時ではなく、それ以外のTextBoxをクリアする時にTextBox6を書き換えてるように思われますが、どうですか?その時の値がとんでもなく大きくなってるとか。 か、循環的にイベントがイベントを起こしてまたイベントが・・・ってぐるぐる回って何かがオーバーフロー? (何かってアバウトですね(^^;)) クリアは必要ですよね。とりあえずオーバーフローの原因次第ですけど、 例えばChangeイベントじゃなくてKeyPressイベントに変えれば、ユーザーがキーインした瞬間にしか発生しないからコードでTextBoxの値を変えても問題が無いのかも・・? でも何となく邪道って言われそう・・・・・・・。 が、たぶん私ならそれで回避できるならやるかな。 けどまずはオーバーフローの原因解明が先ですね。

na714
質問者

お礼

丁寧な指導ありがとうございました。 いろいろ試してみて、やはりテキストボックス内の数値を最終的にクリアする行為をやめてみることにしました。(自分でも本意ではないのですが、妥協しちゃいました。) 現時点でエラーが起きない唯一の方法なようなので・・・。 まだ、学習しはじめた初心者なので今回の件でも大変勉強になりました。 また機会がありましたら、指導お願い致します。

関連するQ&A

  • エクセル VBAにおける平均計算につきまして

    エクセルにおけるVBAの平均計算に対するプログラミングについて教えてください。 内容としては、 ある列に対して(ここではA列とします)数値が入力されており、 その入力されている範囲は毎回入力する度、入力範囲がまちまちになっているとします。 その「まちまちな入力範囲に対して」平均値をVBAにて求めたい場合、 Averageにて範囲指定を入力する際に、どのようにプログラミングすればよろしいのでしょうか? ※具体的にはA列の「数値が入力されているアクティブなセル」を指定したいのですか、どうすればよいでしょうか? 回答をお願い致します。

  • Excel VBAについて

    プログラミング初心者です。 Excelのデータを、VBAをつかって、テキストファイルにおとすよう指示されました。しかし、いまいちやり方がわかりません。 いろいろサイトを調べてみましたがよくわからなかったです。 どういうふうにコード入力していけばいいのでしょうか? ご存知のかた教えてください。 基本的な構文はわかりますのでサンプルを教えていただきたいです。 また、わかりやすい参照URLがあればそれでも結構です。

  • excelのvbaって?

    エクセルのvbaって何をするためにあるのですか? 昔あったプログラミング言語のbasicと何が違うのでしょう? どなたか簡単なコメントを下さい。 どうぞよろしくお願いいたします。

  • エクセルVBAで16の16乗を正確にさせるには?

    エクセルVBAにて16の16乗を取り扱いたいのですが.... データ型が、LongとCurrencyでは、オーバーフローしてしまいます。 そこで、SingleとDuobleですると   Singelでは、1.844674E+19   Doubleでは、1.84467440737096E+19 になります。 これを、正確に18446744073709551616とさせる方法を教示ください。 Dim Dec_data As Double Dec_data = 16 ^ 16 MsgBox Dec_data

  • エクセルVBA 一番端のセルの求め方について

    エクセル2003VBAを使ったプログラミングをしています。 シートにデータが入っていますが途中入っていないセルが多々ある状況です。 このような場合、 1.データの入っている一番したの行の行番号を取り出す方法 2.ある行で一番右側でデータの入っているセルの位置を取り出す方法 はありますでしょうか? データが続いている(空の行等がない)場合は Range("A1").CurrentRegion.rows.Count で出せることはわかっているのですが、違う表のようにデータがあちこちにあるという状況です。 何かいい方法がありましたら教えてください。 よろしくお願いいたします。

  • EXCELのVBAについて

    エクセルでVBAを使う場合に、変数や関数名に日本語を使うことが出来るみたいであまり知らなかったのですが、これは正式に使ってよい物なのでしょうか。わかる範囲で本などを調べてもこのことに触れてない(気が付かないだけかな?)ものですから、もし定義なりルールなりがあるようでしたら教えてください。

  • Excel VBAにてFFT

    Excel VBAにておよそ5万点のデータをFFTする方法についての質問をさせてください。 いつもはあるソフトを用いて実験データのFFTを行っているのですが、作業効率を改善したいと考えExcel VBAにてFFTをしたいと考えています。 私はC言語を少しですが学習したことがあるので、FFTWのようなFFT を実装したフリーソフトウェアが存在しているのを知っています。 時間節約のためExcel VBAにてFFTのコードを位置から書くのではなく、FFTWのアルゴリズムでExcel VBAで利用できるプログラムを使いたいと考えています。 この場合、自分でFFTWのコードを見ながらExcel VBA用にコードを書きかえるしか手はないのでしょうか。私はC言語もExcel VBAも未熟であるため、この作業を行うことができそうにありません、、、 Excel VBAで利用することのできるFFTのコードはあるのでしょうか。 なお、FFTするためのデータ点数は約5万点、多いと10万点ほどで、データ点数が2の累乗に限定しないものを使いたいと考えています。

  • エクセル(VBA)について

    現在契約社員でデータ入力をしています。 同じ会社に5年程勤めているのですが、 業務内容はシステムの人が作ったデータベースに、私がエクセル上で 入力し、その後はアクセスを使いそのデータを社員の人が管理するという内容です。 今更ですが、私は入力のみで全くエクセルを使えないので VBAやプログラミングについても勉強したいと思いました。 我流で勉強した方も多いようですが、簡単にマスター出来るものなのでしょうか? 専門学校等に通うべきなのでしょうか? ちなみに私は理系の頭ではなく文系です・・・。 本屋さんでもテキストを探したのですが、とても種類が多く どれがいいのか全く分からないので、お勧めの本等もありましたら教えてください。 よろしくお願いします。

  • Excel Vba でデータの範囲を知るには?

    Excelを使用していますが、マクロ(VBA)で、シートのデータの範囲を知るにはどうすればよいのでしょうか。  印刷プレビューを行うと、自動的にページ数が求めらていますが、これは、シートのデータの範囲(列及び行の最大値)を判別しているからできるのだと思います。  これを、VBAで行、及び列のMAX値を取得したいのですが、そのメソッド(プロパティ)を知りたいのです。  どなたかご教授ください。

  • Excel VBAでファイルの制御をしたい

    今、Excel VBAでファイル操作の制御スクリプトをくみたくて 悩んでおります。。 "test.xls"ファイルというエクセルの共有ファイルがあります。 そのファイルは日々様々なユーザーがデータを書き込みます。 この共有ファイルに対し、誰か一人がこのファイルを開いている際に 違う誰かがファイルを開こうとした場合に、警告メッセージを表示した後、強制的にファイルを閉じるというプログラムを組みたいのですが・・。 何せ、VBAでのプログラミングはまったくの初心者の為、 悪戦苦闘しております。 どなたか、良いアドバイスを頂けたら嬉しいです。 是非、宜しくお願い致します。