Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8703 / 13645 ツリー ←次へ | 前へ→

【31672】数式の話。 ギャバン 05/11/28(月) 8:54 質問[未読]
【31674】Re:数式の話。 inoue 05/11/28(月) 10:37 回答[未読]
【31675】Re:数式の話。 Jaka 05/11/28(月) 10:45 発言[未読]
【31684】Re:数式の話。 Kein 05/11/28(月) 13:55 発言[未読]
【31695】Re:数式の話。 ギャバン 05/11/28(月) 17:03 発言[未読]
【31698】Re:数式の話。 こたつねこ 05/11/28(月) 19:50 発言[未読]
【31699】Re:数式の話。 ギャバン 05/11/28(月) 20:19 発言[未読]
【31704】Re:数式の話。 こたつねこ 05/11/28(月) 22:03 発言[未読]
【31705】Re:数式の話。 ギャバン 05/11/28(月) 22:11 発言[未読]
【31706】Re:数式の話。 こたつねこ 05/11/29(火) 0:02 発言[未読]

【31672】数式の話。
質問  ギャバン  - 05/11/28(月) 8:54 -

引用なし
パスワード
   数式で割り出した値を数式を削除して値を代入する場合。

Worksheets(1).Cells(x + 4, 3).Formula = "=1*10"
Worksheets(1).Cells(x + 4, 3) = Worksheets(1).Cells(x + 4, 3)
とすぐ代入しようとすると
割り出すより2行目に実行するスピードの方が速すぎて
#N/Aになってしまいます。
これを割り出すまでプログラムを待機させる方法はないものでしょうか?
どなたか伝授お願いです。

【31674】Re:数式の話。
回答  inoue E-MAILWEB  - 05/11/28(月) 10:37 -

引用なし
パスワード
   ▼ギャバン さん:
>これを割り出すまでプログラムを待機させる方法はないものでしょうか?
もし、そうなら間に、
Worksheets(1).Calculate
を入れてみてはいかがでしょう。

【31675】Re:数式の話。
発言  Jaka  - 05/11/28(月) 10:45 -

引用なし
パスワード
   記載されたコードだけで考えるとそのような事は無いと思います。
単に他のコードの書き方が悪い性だと思います。
今まで似たようなコードを書いてきましたから....。
それに計算より書き込みのほうが速かったとしても、Worksheets(1).Cells(x + 4, 3)の値がそのまま入るだけです。
ついでと言っては何ですが、Valueプロパティはつけた方がいいです。

【31684】Re:数式の話。
発言  Kein  - 05/11/28(月) 13:55 -

引用なし
パスワード
   それがやりたい内容そのものなら

Worksheets(1).Cells(x + 4, 3).Value = 10

とするだけです。
無駄な処理をしないように工夫するのが、上達のコツと言えます。

【31695】Re:数式の話。
発言  ギャバン  - 05/11/28(月) 17:03 -

引用なし
パスワード
   すいません、数式はそのままではなないです。
他のアプリと通信するような数式です。通信するもですから、
もしかしたら割り出すのに0.2、3秒
以上かかるっているのではないでしょうか、
意図した秒数だけ次のプログラムまでストップできないものでしょうか?

また、valueをつけないといけない意味を教えてください。
ちなみに.Calculateは無理でした。よろしくです。

【31698】Re:数式の話。
発言  こたつねこ  - 05/11/28(月) 19:50 -

引用なし
パスワード
   ギャバンさん、みなさんこんばんは

>すいません、数式はそのままではなないです。
>他のアプリと通信するような数式です。通信するもですから、

他のアプリと通信する関数なら
Worksheets(1).Cells(x + 4, 3).Value = アプリと通信する関数

で使用できないのですか?

【31699】Re:数式の話。
発言  ギャバン  - 05/11/28(月) 20:19 -

引用なし
パスワード
   ▼こたつねこ さん:
>ギャバンさん、みなさんこんばんは
>
>>すいません、数式はそのままではなないです。
>>他のアプリと通信するような数式です。通信するもですから、
>
>他のアプリと通信する関数なら
>Worksheets(1).Cells(x + 4, 3).Value = アプリと通信する関数
>
>で使用できないのですか?

数値をわりだすことはもちろんできます。
でも数値がほしいのは一回のみで
そのあとの通信は必要ないので、
値だけとりだそうとしているのです。
余計な通信をしたくないので。

【31704】Re:数式の話。
発言  こたつねこ  - 05/11/28(月) 22:03 -

引用なし
パスワード
   ギャバンさん、こんばんは

>数値をわりだすことはもちろんできます。
>でも数値がほしいのは一回のみで
>そのあとの通信は必要ないので、
>値だけとりだそうとしているのです。
>余計な通信をしたくないので。

この意味がよくわかりませんが、

>Worksheets(1).Cells(x + 4, 3).Formula = "=1*10"
>Worksheets(1).Cells(x + 4, 3) = Worksheets(1).Cells(x + 4, 3)
この例で通信が1回であるなら、

>Worksheets(1).Cells(x + 4, 3).Value = アプリと通信する関数
で記述した場合も通信するのは1回だけということになるのではないの
でしょうか?

>数値をわりだすことはもちろんできます。
であるなら、
>Worksheets(1).Cells(x + 4, 3).Formula = "=1*10"
>Worksheets(1).Cells(x + 4, 3) = Worksheets(1).Cells(x + 4, 3)
にこだわる必要性が今ひとつ私にはわかりかねます^^;

【31705】Re:数式の話。
発言  ギャバン  - 05/11/28(月) 22:11 -

引用なし
パスワード
   ▼こたつねこ さん:
>ギャバンさん、こんばんは
>
>>数値をわりだすことはもちろんできます。
>>でも数値がほしいのは一回のみで
>>そのあとの通信は必要ないので、
>>値だけとりだそうとしているのです。
>>余計な通信をしたくないので。
>
>この意味がよくわかりませんが、
>
>>Worksheets(1).Cells(x + 4, 3).Formula = "=1*10"
>>Worksheets(1).Cells(x + 4, 3) = Worksheets(1).Cells(x + 4, 3)
>この例で通信が1回であるなら、
>
>>Worksheets(1).Cells(x + 4, 3).Value = アプリと通信する関数
>で記述した場合も通信するのは1回だけということになるのではないの
>でしょうか?
>
>>数値をわりだすことはもちろんできます。
>であるなら、
>>Worksheets(1).Cells(x + 4, 3).Formula = "=1*10"
>>Worksheets(1).Cells(x + 4, 3) = Worksheets(1).Cells(x + 4, 3)
>にこだわる必要性が今ひとつ私にはわかりかねます^^;

できるだけ、通信を減らして動作を軽くしようとする狙いがあるのです。

【31706】Re:数式の話。
発言  こたつねこ  - 05/11/29(火) 0:02 -

引用なし
パスワード
   ギャバンさん、こんばんは

>できるだけ、通信を減らして動作を軽くしようとする狙いがあるのです。

動作を軽くするということでしたら、個人的には直接関数を使い同期動
作させれば、無駄なウェイトを入れる必要もなくかえってよいと思うの
ですが・・・

こんな事ばかり言っても無駄レスにしかなりそうにありませんね^^;

プログラムを止めるということでしたらWaitメソッド、APIでSleep等
方法は色々あります。
あまりお勧めしませんが場合によってはDoevents関数を入れることで
ご希望の動作になる可能性もあると思いますが・・・

ギャバンさんの現在のコード等こちらでは分かりかねますし、対応策も
ご自分で判断できるだけのスキルがあるとお見受けいたしましたので、
一度お調べになってギャバンさん自身でご判断ください。

8703 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free