dポイントプレゼントキャンペーン実施中!

OSはVista/メモリ2ギガ(ただし、XP/メモリ250メガでもまったく同じ症状が起こりました)、エクセル2003です。
エクセルのシートに品名一覧データを作り、ユーザーフォームから追加、変更等できるマクロを組んでいます。
ユーザーフォーム(名前は「設定」)にはコンボボックスが1つとテキストボックスが3つ、シート(名前は「一覧」)の項目数は4つ、品名数は50程度です。
シート上にユーザーフォームを開くボタンがあり、コンボボックスのソースは、それを押したときに以下のように取得しています。

設定.ComboBox1.Clear
Range("A2").Activate
設定.ComboBox1.RowSource = Worksheets("一覧").Range(ActiveCell, ActiveCell.End(xlDown)).Address

本体のコードは以下のとおりです。

Private Sub CommandButton1_Click()
Dim a As Integer
Dim c, d, e, f As String
Dim k As Range

Sheets("一覧").Activate
c = 設定.ComboBox1.Value
d = 設定.TextBox1.Value
e = 設定.TextBox2.Value
f = 設定.TextBox3.Value
Columns("A:A").Select
Set k = Selection.Find(c)
If Not k Is Nothing Then
If MsgBox("その品名はすでに存在します。" & vbCrLf & "置き換えますか?", vbOKCancel) = vbCancel Then Exit Sub
a = k.Row
Cells(a, 1).Value = c
Cells(a, 2).Value = d
Cells(a, 3).Value = e
Cells(a, 4).Value = f
Set k = Nothing
Range("A1").Activate
Else
a = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(a, 1).Value = c
Cells(a, 2).Value = d
Cells(a, 3).Value = e
Cells(a, 4).Value = f
Rows("2:" & a).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending
Range("A1").Activate
End If
Me.Hide
End Sub

新規追加(Else以降の部分)はスムーズに行くのですが、すでにデータがあって置き換える場合(Else以前の部分)、作動はするのですが、3回くらい同じことを繰り返すと「リソース不足のため、このタスクを完了することができません。選択するデータを少なくするか、ほかのアプリケーションを終了して再度試してください。」というエラーが出てエクセルが自動終了してしまいます。
最初、「Set k = Nothing」が入っていなかったのでそのせいかと思ったのですが、入れてみても事態は変わりません。
もちろん、ほかのアプリケーションは作動していません。

お解りの方がいらっしゃいましたら、よろしくお願いいたします。

A 回答 (1件)

こんにちは。



>設定.ComboBox1.RowSource = Worksheets("一覧").Range(ActiveCell, ActiveCell.End(xlDown)).Address
ここで、少し無理が生じていますが、とりあえず、これはそのままにしておきます。

残る部分としては、
>Me.Hide

この部分がちょっと問題かもしれませんね。以下に変えてみたらいかがですか?

Unload Me

なお、Excelの使用するメモリは、物理的メモリではなく、仮想メモリ側です。
    • good
    • 0
この回答へのお礼

いつもお世話になります。
Unload Meで解消しました。
気がつきませんでした。
ありがとうございました。

お礼日時:2008/03/07 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!