[[20061119193546]] 『メモリ不足って出てしまいます』(arai) ページの最後に飛ぶ

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

 

『メモリ不足って出てしまいます』(arai)

こんばんは何時もお世話になります

 会社のパソコン(NT、97、セレロン700、メモリ192です)でやると
メモリ不足ですって出てしまうのですが、何処がいけないのか是非ご教授ください
宜しく御願い致します。

 番号	品名	形状	特徴	日付	取扱場所
123	ゴム		黒	11月2日	A支店
564	鉛筆			11月3日	A支店
758	ゴム			11月2日	A支店
1236	ノート		縦書き	11月4日	A支店
11	下敷き			11月2日	A支店
15639	コンパス			11月3日	A支店

 上記のような表になっています。(反映フォーム)
この表を規則性を持たせるために
1 日付順
2 番号順
に並べていきます。
日付で区切り表題を入力し以下のように修正していきます。

 	品名	形状	特徴	日付	取扱場所
11	下敷き			11月2日	A支店
123	ゴム		黒	11月2日	A支店
758	ゴム			11月2日	A支店
	品名	形状	特徴	日付	取扱場所
564	鉛筆			11月3日	A支店
15639	コンパス			11月3日	A支店
	品名	形状	特徴	日付	取扱場所
1236	ノート		縦書き	11月4日	A支店

自分なりに考えこのようなお恥ずかしいものが出来上がりました

 Sub 修正()

    Sheets("反映フォーム").Select
    Range("A2:F100").Select

    Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin

    Selection.AutoFilter Field:=6, Criteria1:="A支店"
    Columns("F:F").Select
    Selection.EntireColumn.Hidden = True

    Range("A2").Select

 qaz = Range("D105").Value
 wsx = Range("D104").Value

    Rows(qaz).Select
        Selection.Insert Shift:=xlDown

    Rows(wsx).Select
        Selection.Insert Shift:=xlDown

    Rows("1:1").Select
        Selection.Copy

    Range("a" & qaz).Select
        ActiveSheet.Paste

    Range("a" & wsx).Select
        ActiveSheet.Paste

    Range("A2").Select
    Application.CutCopyMode = False

     ActiveWindow.SelectedSheets.PrintOut Copies:=1

    Sheets("反映フォーム").Select
    Range("A1").Select

 End Sub

恥じらいもなく載せてしまいました
どうぞ宜しく御願い致します    (arai)


 何がいけないのかはわかりません。。。
 
 σ(^o^;)の勉強のため作ってみました。
 (久々にエクセルを触って、忘れてる&緊張している・・・)
 
Sub test()
Dim MyAry As Variant, MyA As Variant
Dim i As Long
    With Sheets("反映フォーム")
        MyAry = .Range("B1:F1").Value
        .Range("A1").CurrentRegion.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
        MyA = .Range("A1", .Range("F" & Rows.Count).End(xlUp)).Value
        For i = UBound(MyA, 1) To 3 Step -1
            If MyA(i, 5) <> MyA(i - 1, 5) Then
                .Rows(i).Insert Shift:=xlDown
                .Range("B" & i).Resize(, 5) = MyAry
            End If
        Next i
        .Range("A1") = ""
    End With
    Erase MyAry, MyA
End Sub
 
 んでもって、これで解決するのかもわかりません(汗
 (キリキ)(〃⌒o⌒)b

キリキさま有難う御座いました

 とてつもない式で理解が、、、
明後日会社で検証させていただきます
有難う御座いました
失礼させて頂きます  (arai)


キリキ様マクロを検証してみました。
 バッチリでした。
 大変すばらしい解答、勉強になります。
 今後とも勉強させてください。
 宜しくお願いいたします。
 (shota)

有難う御座いました

 この前にペーストを手動でする作業があったのですが
その作業にメモリをとられていたようです。
その数式を変更したら大丈夫でした
しかしながら、教えていただいたモジュールは
97だからなのか、フォーマットが違うのか
自分には判りかねますが動きませんでした。
今日はフォーマットを持ち帰れなかったので
後日相談に伺わせていただきます
どうぞ宜しく御願い致します
                        (arai)

 97の場合確か

 Dim myAry() As Variant, MyA() As Variant

 と宣言すればよいかと...
 (seiya)

 seiyaさん、フォローありがとうございます^^
 
 そうなんですか。。。
 97 の場合は、()が必要なんですね?
 勉強になりました^^
 
 (キリキ)(〃⌒o⌒)b


 セル範囲を変数にいれる場合、97だとこれが正解です。
 なまじ配列宣言するとエラーになったと思います。
 >Dim MyAry As Variant, MyA As Variant
 >   With Sheets("反映フォーム")
 >       MyAry = .Range("B1:F1").Value

 Range("A1:D20").Value = 配列()
 は、ダメだった記憶があります。

 >97だからなのか、フォーマットが違うのか
 >自分には判りかねますが動きませんでした。
 動かないとはどういう意味でしょうか?
 意味が解りません。
 実行エラー?
 コンパイルエラー?
 実行結果が違う?(これは動いています。落ちた可能性もありますが。)
 BJ

 >DataOption1:=xlSortNormal
 これはExcel2002で追加されたっぽい。 (アカギ)


こんばんは

こんなにも沢山の書き込み有難う御座いました

 お恥ずかしいコードを載せたにもかかわらず
本当に有難う御座います。
明日出勤し、もう一度試してみます
そして、この場に持ち帰り改めて
お礼をさせていただきます
どうぞ宜しく御願い致します。失礼させて頂きます。 (arai)

コメント返信:

[ 一覧(最新更新順) ]


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