[リストへもどる]
一括表示

投稿時間:2003/07/28(Mon) 07:19
投稿者名:夢さん
URL :
タイトル:
オーバーフルローの回避
夢さんです。又、お世話になります。

Excelでsheet("S1")のセルの内容をsheet("S2")のセルにコピーしようとしたところ
オーバーフローのエラーになりました。
で、下記のようにしたところ
今度は”sub又はFunctionが定義されていません。”とのエラーが出ました。
どうしたら良いのですか?
初歩的な質問でお恥ずかしいです。

d(0) =  TRUNC((Sheets("S1").Cells(4, 48)),0)
  
  
  

投稿時間:2003/07/28(Mon) 10:47
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: オーバーフルローの回避
> d(0) =  TRUNC((Sheets("S1").Cells(4, 48)),0)

このTRUNCってのはなんでしょうか?
見たこと無いんですけど……。

何をどうやったらオーバーフローになるのかも分かりませんが、
とりあえず、マクロを記録してみればコピーの仕方は分かると思います。

投稿時間:2003/07/28(Mon) 11:54
投稿者名:Say
Eメール:
URL :
タイトル:
Re: オーバーフルローの回避
> d(0) =  TRUNC((Sheets("S1").Cells(4, 48)),0)
  
TRUNCは、たとえば
    Sheets("S1").Cells(1, 1) = 123.456
    Sheets("S1").Cells(2, 1) = "= TRUNC(A1, 0)"
のような使い方をします。

小数部切捨ては
セル内が負の数にならないなら
d(0) = Int(Sheets("S1").Cells(4, 48).Value)
銀行丸めでよければ
d(0) = Clng(Sheets("S1").Cells(4, 48).Value)

ひねくれた方法としては、(VB6限定)
d(0) = Clng(Split(CStr(objBook.Worksheets("S1").Cells(4, 48).Value), ".")(0))

投稿時間:2003/07/29(Tue) 17:47
投稿者名:うぉる
Eメール:
URL :
タイトル:
Re: オーバーフルローの回避
>  Excelでsheet("S1")のセルの内容をsheet("S2")のセルにコピーしようとしたところ
> オーバーフローのエラーになりました。

一度変数に格納しようとしていて、そこでオーバーフローを起こしているとか。

> 今度は”sub又はFunctionが定義されていません。”とのエラーが出ました。
> d(0) =  TRUNC((Sheets("S1").Cells(4, 48)),0)

TRUNCはExcelVBA用の関数なので、VBで使用できません。
TRUNCは小数点以下切り捨てなので、VBならばFix関数を使用してみてはいかがでしょうか。