[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『メモリの不足』(初心者)
以前、この学校で、
A列にあるものとB列にあるもので同じものの列を揃えるという下記、マクロを
教えていただきました。
ずっと使って重宝させていただいておりますが、昨日からいきなり
エラー9=メモリが不足していると出てきて、マクロが実行できません。
同様のデータを使っているので、理由が分からず困っています。
どなたかご教授いただけないでしょうか?
よろしくお願いします。
Sub 行揃()
Dim a, i As Long, ii As Long, w(), x As Object, n As Long
With Range("a1").CurrentRegion
a = .Value With CreateObject("System.Collections.SortedList") For ii = 1 To UBound(a, 2) For i = 1 To UBound(a, 1) If Not IsEmpty(a(i, ii)) Then If Not .Contains(a(i, ii)) Then ReDim w(1 To UBound(a, 2) * 2, 1 To 1) Else w = .Item(a(i, ii)) End If n = w(UBound(a, 2) + ii, 1) + 1 If UBound(w, 2) < n Then ReDim Preserve w(1 To UBound(w, 1), 1 To n) End If w(ii, n) = a(i, ii) w(UBound(a, 2) + ii, 1) = n .Item(a(i, ii)) = w End If Next Next Set x = .Clone: n = 0 End With With .Offset(, .Columns.Count + 1).Cells(1) .CurrentRegion.ClearContents For i = 0 To x.Count - 1 w = x.GetByIndex(i) .Offset(n).Resize(UBound(w, 2), UBound(a, 2)).Value = _ Application.Transpose(w) n = n + UBound(w, 2) Next End With End With Set x = Nothing End Sub
Excel2010
windows 7
最初の With の次の行で MsgBox .Address(False, False) として、意図していない範囲になっていないでしょうか。 (Mook)
かな?
メモリ不足になるのは a = .Value だと思いますが? (seiya)
ありがとうございます。
意図した範囲になっていました。
セルにあるデータの形式か何かの問題でしょうか?
valueをどのように変えるとよいのでしょうか?
(初心者」)
>意図した範囲になっていました。 この範囲のアドレスを教えてください。 もしそこでのエラーなら、配列の使用はできなくなります。 (seiya)
とりあえず、
a = .Value を a = .Resize(, 2).Value にして試してください。 (seiya)
(初心者)
それでは、ステップデバッグしてください。 コードのどの部分でもいいので、クリック その後 F8 で一行づつ実行して、エラーになるまで繰り返して エラーになる行を探してください。
エラーになったら、その行に関連する変数も見てください。 (seiya)
(初心者)
Hummmm...
DLLが参照不可になっていたり。FrameworkがInstallされていなかったり?
まったく同じファイルが機能しなくなったのですか?
新しいファイルに移し替えてもだめですか?
それでもだめだったら ファイルをアップできますか? http://www.filedropper.com/ (seiya) これから外出するので、返信は遅くなります。 13:41
もう少し、自分でも調べてみます。
(初心者)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.