Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1439 / 13645 ツリー ←次へ | 前へ→

【74437】LAN内に作ったファイルのマクロがエラーになる isausa 13/6/13(木) 16:33 質問[未読]
【74442】Re:LAN内に作ったファイルのマクロがエ... Yuki 13/6/15(土) 9:10 発言[未読]
【74444】Re:LAN内に作ったファイルのマクロがエ... isausa 13/6/17(月) 8:44 質問[未読]
【74445】Re:LAN内に作ったファイルのマクロがエ... Yuki 13/6/17(月) 9:37 発言[未読]
【74446】Re:LAN内に作ったファイルのマクロがエ... UO3 13/6/17(月) 9:47 発言[未読]
【74485】Re:LAN内に作ったファイルのマクロがエ... isausa 13/6/26(水) 10:59 お礼[未読]
【74448】Re:LAN内に作ったファイルのマクロがエ... 13/6/19(水) 7:38 発言[未読]

【74437】LAN内に作ったファイルのマクロがエラ...
質問  isausa  - 13/6/13(木) 16:33 -

引用なし
パスワード
   A列B列が品番、品名 C列が予定実績の列、D繰越E入出庫日F入庫数G出庫数H現在庫、Iは備考という                            
表を作りました。これはアクセスのデータをインポートしたもので、毎回ほぼ15000〜6000件になります。                            
複数の人がランダムに入れるため、順序がまちまちです。                            
この表を在庫管理のため並べ替えるマクロを記述でつくりました。                            
社内LANをはっているので、サーバーに置きました。動作は確認できました。                            
でも他の端末で使用しようとすると"インデックスが有効範囲にありません"のエラーになってしまいます。                            
その端末で、マクロを書き直すと動きます。でも数十台の端末を一台一台なおすわけにはいきません。                            
なにか記述が足りないのでしょうか。                            
                            
Sub ソート及び空白処理()                            
'                            
  Range("A2:G15").Select                            
  Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:=Range("D3") _                            
    , Order2:=xlDescending, Key3:=Range("E3"), Order3:=xlAscending, Header _                            
    :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _                            
    , SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _                            
    xlSortNormal, DataOption3:=xlSortNormal                            
  Range("D3:G15").Select                            
  Selection.Replace What:="", Replacement:="0", LookAt:=xlPart, _                            
    SearchOrder:=xlByRows, MatchCase:=False                            
                            
End Sub                            
                            
お知恵をお貸し下さい

【74442】Re:LAN内に作ったファイルのマクロが...
発言  Yuki  - 13/6/15(土) 9:10 -

引用なし
パスワード
   ▼isausa さん:
   
>表を作りました。これはアクセスのデータをインポートしたもので、毎回ほぼ15000〜6000件になります。                            
>複数の人がランダムに入れるため、順序がまちまちです。                          
>この表を在庫管理のため並べ替えるマクロを記述でつくりました。       

アクセスから取り込むときにソートして取り込めばいいのではないですか?
ORDER BY フィールド名

                     
>社内LANをはっているので、サーバーに置きました。動作は確認できました。                            
>でも他の端末で使用しようとすると"インデックスが有効範囲にありません"のエラーになってしまいます。                            
>その端末で、マクロを書き直すと動きます。でも数十台の端末を一台一台なおすわけにはいきません。                            

又、何処をどう直すと動くのですか?

【74444】Re:LAN内に作ったファイルのマクロが...
質問  isausa  - 13/6/17(月) 8:44 -

引用なし
パスワード
   ▼Yuki さん:
>   
>>表を作りました。これはアクセスのデータをインポートしたもので、毎回ほぼ15000〜6000件になります。                            
>>複数の人がランダムに入れるため、順序がまちまちです。                          
>>この表を在庫管理のため並べ替えるマクロを記述でつくりました。       
>
>アクセスから取り込むときにソートして取り込めばいいのではないですか?
>ORDER BY フィールド名
>
アクセスで三つのソート条件の並び替えはできるのですか。アクセスの勉強からしなくてはなりませんね。がんばります。
>                     
>>社内LANをはっているので、サーバーに置きました。動作は確認できました。                            
>>でも他の端末で使用しようとすると"インデックスが有効範囲にありません"のエラーになってしまいます。                            
>>その端末で、マクロを書き直すと動きます。でも数十台の端末を一台一台なおすわけにはいきません。                            
>
>又、何処をどう直すと動くのですか?
各 端末へ行って、その部分を記録しなおすと動くのです。マクロのコピーだけではなりません。
たぶん、私の浅い知識ではわからなくて、何か方法があるのかなと考えたのですが・・・・

【74445】Re:LAN内に作ったファイルのマクロが...
発言  Yuki  - 13/6/17(月) 9:37 -

引用なし
パスワード
   ▼isausa さん:
アクセスから取り込んだシート名は全端末一緒でしょうね。
端末によって行数が違うでしょうから
シート名を指定して行数を取得で書いてみました。

それと今アクセスから取込んでいるコードをUP出来たらUP
して下さい。

Sub ソート及び空白処理()
  Dim eRow  As Long
  With Worksheets("Sheet1")
    eRow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A2:G" & eRow).Sort Key1:=.Range("A3"), Order1:=xlAscending, _
                  Key2:=.Range("D3"), Order2:=xlDescending, _
                  Key3:=.Range("E3"), Order3:=xlAscending, _
                  Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
                  Orientation:=xlTopToBottom, SortMethod:=xlPinYin, _
                  DataOption1:=xlSortNormal, _
                  DataOption2:=xlSortNormal, _
                  DataOption3:=xlSortNormal
    .Range("D3:G" & eRow).Replace What:="", Replacement:="0", LookAt:=xlPart, _
                  SearchOrder:=xlByRows, MatchCase:=False
  End With
End Sub

【74446】Re:LAN内に作ったファイルのマクロが...
発言  UO3  - 13/6/17(月) 9:47 -

引用なし
パスワード
   ▼isausa さん:

おはようございます
対象がAccessからのデータだったとしても、エクセルに取り込んだデータですから
エクセルの流儀(?)で並べ替えができるはずですね。
PC毎に異なる結果ということで思い浮かぶのはフォルダのパス文字列の違いといったものですが
もう1つ、並び替えのユーザー定義もPC毎に異なる可能性はありますね。

OrderCustom:=1 と規定しておられますが、もし、特段のユーザー定義を使いたいと言うことがないのであれば
この指定をなくしてみられてはいかがでしょう。
実際のユーザー定義リストの最初のインデックスのものを並び替えで使う場合、OrderCustomは 2 だと思いますが、
ことさら 1 を規定しておられる意味がちょっとわかりません。

【74448】Re:LAN内に作ったファイルのマクロが...
発言    - 13/6/19(水) 7:38 -

引用なし
パスワード
   こんにちは。

>アクセスで三つのソート条件の並び替えはできるのですか。アクセスの勉強からしなくてはなりませんね。がんばります。

isausaさんがご自分でなさらなくても、そのアクセスをいじる権限のあるひとや
アクセスの分かるひとにお願いすればいいと思いますよ?

ご自身で勉強される場合、クエリ→並べ替えときたら、次が複数条件の並べ替え
(and条件or条件)ですから、ごく基礎的なことです。

いや、本当にこの線で行かれるなら、解決は時間の問題です。


ということで、以下は「勉強のため」のコメントです。

>その端末で、マクロを書き直すと動きます。でも数十台の端末を一台一台なおすわけにはいきません。                            

まずはダメモトで、その端末で動いたマクロを元の端末で動かしてみましょうか。

それから、その端末と元の端末となにが違うか考えてみましょう。
なにからなにまですべて同じってことは無いですよね(笑)。
同じだったら結果も同じはずですもの。
違いが見つかったら、それがコードに影響しているか、それをコードで吸収できるか
考えてみましょう。


>たぶん、私の浅い知識ではわからなくて、何か方法があるのかなと考えたのですが・・・・
方法があるなら探せば見つかります。
自分で0から思いつくのは無理でも、探して見つけるのは比較的簡単です。

たぶん質問者と回答者で探す能力にはそんなに大きな違いはなくて
違いがあるとしたら、シートの状態やコードの内容を把握するちからだと思います。
「現状こうなっている」→「解決方法を探そう」というときに
現状が十分に把握できてないと、有効な解決方法は見つかりませんでしょ?

回答コードの表面にあらわれるのは解決方法だけで、つい、そちらに目がいって
しまいますが、大事なのはまず現状の把握です。徹底的に把握して下さい。


▼isausa さん:
>▼Yuki さん:
>>   
>>>表を作りました。これはアクセスのデータをインポートしたもので、毎回ほぼ15000〜6000件になります。                            
>>>複数の人がランダムに入れるため、順序がまちまちです。                          
>>>この表を在庫管理のため並べ替えるマクロを記述でつくりました。       
>>
>>アクセスから取り込むときにソートして取り込めばいいのではないですか?
>>ORDER BY フィールド名
>>
>アクセスで三つのソート条件の並び替えはできるのですか。アクセスの勉強からしなくてはなりませんね。がんばります。
>>                     
>>>社内LANをはっているので、サーバーに置きました。動作は確認できました。                            
>>>でも他の端末で使用しようとすると"インデックスが有効範囲にありません"のエラーになってしまいます。                            
>>>その端末で、マクロを書き直すと動きます。でも数十台の端末を一台一台なおすわけにはいきません。                            
>>
>>又、何処をどう直すと動くのですか?
>各 端末へ行って、その部分を記録しなおすと動くのです。マクロのコピーだけではなりません。
>たぶん、私の浅い知識ではわからなくて、何か方法があるのかなと考えたのですが・・・・

【74485】Re:LAN内に作ったファイルのマクロが...
お礼  isausa  - 13/6/26(水) 10:59 -

引用なし
パスワード
   ▼佳 さん:
>こんにちは。
>
>まずはダメモトで、その端末で動いたマクロを元の端末で動かしてみましょうか。
>
>それから、その端末と元の端末となにが違うか考えてみましょう。
>なにからなにまですべて同じってことは無いですよね(笑)。
>同じだったら結果も同じはずですもの。
>違いが見つかったら、それがコードに影響しているか、それをコードで吸収できるか
>考えてみましょう。

 サーバーにおいたファイルなので、同じだと考えたのですが、考え方が浅はかでしょうか。

UO3さん:
>OrderCustom:=1 と規定しておられますが、もし、特段のユーザー定義を使いたいと言うこ>とがないのであれば
>この指定をなくしてみられてはいかがでしょう。
>実際のユーザー定義リストの最初のインデックスのものを並び替えで使う場合、
>OrderCustomは 2 だと思いますが、
>ことさら 1 を規定しておられる意味がちょっとわかりません。
指定をなくして、やってみました。全部の端末で確認したわけではないのですが、動きました。
記録でマクロを作成したので、意味合いがまったくわかっていなかったのです。
しかし、YUKIさんに作っていただいたマクロでOrderCustom:=1を外してみましたが、同じような症状が出てだめでした。

YUKIさん:
 作っていただいたマクロで動かしてみましたが、同じ症状がでます。なにが原因かわからないのですが、これから皆さんのアドバイスを検証して、少しずつ前進したいと思います。
みなさん ありがとうございました。

1439 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free