[[20020611234240]] 『メモリー不足で表示できません』(ダイ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『メモリー不足で表示できません』(ダイ)

計測器のデータ処理用パソコンで、上記エラーが出て困っています。

1200ほどのデータを自動入力して処理しており、マシンパワー的には、苦しそうです。

環境は、Pen120MHz、メモリー48MB、Win95、常駐ソフト無し、エクセルのみ使用

メモリーが足りないとは思えないのですが。リソースも50%程度です。


 48MBでは厳しいと思いますが、計測器からデータを取り込むソフトには

 何MB必要と書いてありますか?Excelのバージョンは?

 (kazu)


 Excelのバージョンは97です。

 データの取り込み方法は、ミツトヨのインプットツール(ハードウエア)と言う物を

P/S2ポートに繋ぎ、エクセルのセルに直接データ−が入ってくる物です。

 そのデータ−をマクロを組んで簡単な合否判定をしています。

 1200個分のデータを残さなくては成らないので、1200個分のセルにマクロ関数を割

り当てています。


 セルに割り当てているのは、数式だと思いますが数が多いのが気になります。

 どんな式ですか?式1200個を毎回再計算していると思います。

 [ツール]メニュー→[オプション]→計算方法が[自動]になっていると思います、

 [手動]にしておいて、データを採取したあと、[F9]キーで再計算する、

 データを採取したあとで式を入れる方法はとれませんか?

 (kazu)


 判定NG品をリアルタイムで抜取を行っている為、手動計算は困難です。

 セルに入れている数式は以下の通りです

 =IF(B26=0,"",判定(C25,C26))

 また、マクロは

 Function 判定(Data1 As Single, Data2 As Single) As String

        Dim Rev1 As String

        Dim DA1  As Single

        Dim DA2  As Single

        Dim DA3  As Single

        Dim UP   As Single

        Dim Down As Single

  UP = Range("K5")

  Down = Range("K7")

        If Data1 > UP Then

           DA1 = 2

           ElseIf Data1 < Down Then

             DA1 = 3

           Else

             DA1 = 0.6

        End If

        If Data2 > UP Then

           DA2 = 2

           ElseIf Data1 < Down Then

             DA2 = 3

           Else

             DA2 = 0.6

        End If

  DA3 = DA1 + DA2

        If DA3 = 1.2 Then

           Rev1 = "OK"

        End If

        If DA3 > 1.2 Then

           Rev1 = "NG"

        End If

           判定 = Rev1

End Function

の通りです。

式を入れる前の状態では、ためした事はありません。

使用しているPCは、計測器用にまっさらにした物を使用しています。

(ダイ)


 リアルタイムで抜き取りですか、順次にセルに値を入れてゆくような処理なら

 何とかなるかもしれないですが、やはりメモリーを増やすしかないでしょうか。

 (kazu)


 ワークシートの内容を変更したイベント情報を使って下のような方法も

 あるにはあります。この方式に変更して、今セルに入れている式をすべて

 削除します。

 下の式はVBAProjectの下にあるSheet1(Sheet1)のところをダブルクリックして

 作ります。

 (kazu)

  Private Sub Worksheet_Change(ByVal Target As Range)

     Application.EnableEvents = False

     r = Target.Row

     c = Target.Column

     If r = 25 Then

         If c = 3 Then

             ' セルC25が変化したらセルC25とC26で判定する例

             ans = 判定(Cells(r, c), Cells(r + 1, c))

             MsgBox ans

         End If

     End If

     Application.EnableEvents = True

  End Sub


 とりあえず、ある一定区間で手動により、メモリーのデフラグを行う様にしたところ、

メモリー不足は出ない様です。

 Excelのシート1つ起動させるのに48MBでも足りないとはオドロキです。

 上記マクロも、ぜひ試してみたいと思います。

 どうも有難うございました。

 


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.