Excel VBA質問箱 IV

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

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


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

【79167】2016VBAのSORTで10004のエラー 初心者ですいません 17/5/30(火) 23:23 質問[未読]
【79168】Re:2016VBAのSORTで10004のエラー γ 17/5/31(水) 8:15 発言[未読]
【79169】Re:2016VBAのSORTで10004のエラー 初心者ですいません 17/5/31(水) 10:20 回答[未読]
【79173】Re:2016VBAのSORTで10004のエラー γ 17/5/31(水) 12:42 発言[未読]
【79179】Re:2016VBAのSORTで10004のエラー マナ 17/5/31(水) 18:32 発言[未読]
【79182】Re:2016VBAのSORTで10004のエラー 初心者ですいません 17/5/31(水) 22:30 お礼[未読]

【79167】2016VBAのSORTで10004のエラー
質問  初心者ですいません  - 17/5/30(火) 23:23 -

引用なし
パスワード
   EXCEL VBAの実行で、「実行時エラー ’10004’ アプリケーション定義またはオブジェクト定義のエラーです」が出て困っています。
どなたかわかる方教えてください。
エラーの出る場所は、以下のSortのApplyです。
この記述で何かおかしい所があるのでしょうか?
(ちなみに、記載したロジックは手書き転載ですので、細かい打鍵ミスはお許しください。)

【メイン】
Call Z00関数.SelectRows(2)

ActiveSheet.Sort.SortFielda.Clear
ActiveSheet.Sort.SortFielda.Add Key:=ActiveSheet.Range("B2").Order:=xlAscending,DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Selection
.header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

public Function SelectRows(
Optional ByVal ingStartRow As long = 1, _
Optional ByVal ingEndRow As long = 0 _
(
If ingEndRow = 0 then
ingEndRow = Z00関数.GetLastRC(EnmGetLastR.Row)
End if
If ingEndRow < inStartRow then
ingEndRow = Appllication.Rows.count
End if

Call Application.Rows(ingStartRow & ":" & ingEndRow).Select

End Function


public Function GetLastrc, _
ByVal usrRC As enmGetLastRC, _
Optional ByVal strBookName As String = "", _
Optional ByVal strSheetName As String = "" _
(
On Error Go To EXCEPTION
IF strBookName = "" then
strBookName = ActiveWorkbook.Name
End if
IF strSheetName = "" then
strSheetName = Workbooks(strBookName).ActiveSheet.Name
End if
With Workbooks(strBookName).Sheets(strSheetName).UsedRange
if usrRC = unmGetLastRC.Row Then
GetLastRC = .Find("*", ,xlFormulas, ,xlByRows, xlPrevious).row
else
GetLastRC = .Find("*", ,xlFormulas, ,xlByColumns, xlPrevious).Column
End if
End With

Exit Function
EXCEPTION:
GetLastRC = 0
Exit Function

【79168】Re:2016VBAのSORTで10004のエラー
発言  γ  - 17/5/31(水) 8:15 -

引用なし
パスワード
   > ちなみに、記載したロジックは手書き転載ですので、
> 細かい打鍵ミスはお許しください。

いいえ許せません。
デバッグ(プログラムミスの修正)がテーマなんだから、
現在動作中のコードをそのままこちらにコピーペイストしてください。
少なくともコンパイルエラーの出ないものを提示すべきです。

というのは、
Option Explicitを書いていない場合、
タイプミスして別の変数と解釈されていてうまく動作しない、
などというのは実によくある話です。
その場合は、手打ちのミスなのか、本来のコードが間違っているのか
見分けがつきません。

変数名違いを指摘すると、いやいや実はきちんと書いてありますよ、
などとなって、無駄な時間を回答者は使うわけです。
それに他人に手打ちのミスのチェックまでさせる積もりなんですか?
他人にものを依頼するときのマナーをよく考えるべきです。

ステップ実行して、ソートの対象セルが想定しているものになっているのか、
まずは自分でデバッグをしてください。
その上で不明な点を質問して下さい。
その際、ユーザー定義型があれば、その定義も含めて示さないと。
他人にはあなたのPC画面が見えているわけではないんですよ。

デバッグの方法は、
ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html
ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030_03.html
などのページを参考にして下さい。

# たぶん、自分で考えたコードだけでなく、
# ネット上にあったものを借用しているはず。
# 自分でよく理解できていないんだろうなと想像します。
# (少なくとも今のあなたに不必要な)汎用化が足を引っ張っている印象です。

【79169】Re:2016VBAのSORTで10004のエラー
回答  初心者ですいません  - 17/5/31(水) 10:20 -

引用なし
パスワード
   申し訳ございません。
実は、前任者が作成したロジックですが、2003から2013へのUPで、
2003のままのSORTメソッドで今回なエラーとなり、2013のSORTオブジェクトに変更している最中です。
ただ、いかんせん、詳しいものがおらず、VBAをかじった経験者の私がやらざるを得なくなりました。
なので、ロジックはよく分からず、手探りで対応している次第。
さらに、来週頭までに動作させる必要もあります。
ここで、ご無理であれば、なんとかするしかないです。
m(_ _)m

ちなみに、Order前のカンマでない点と、SortFieldaのスペルは間違えています。

【79173】Re:2016VBAのSORTで10004のエラー
発言  γ  - 17/5/31(水) 12:42 -

引用なし
パスワード
   ▼初心者ですいません さん:
>申し訳ございません。
>実は、前任者が作成したロジックですが、2003から2013へのUPで、
>2003のままのSORTメソッドで今回なエラーとなり、2013のSORTオブジェクトに変更している最中です。
>ただ、いかんせん、詳しいものがおらず、VBAをかじった経験者の私がやらざるを得なくなりました。
>なので、ロジックはよく分からず、手探りで対応している次第。
>さらに、来週頭までに動作させる必要もあります。
>ここで、ご無理であれば、なんとかするしかないです。

型定義部分を含めたコードを正しくコピーペイストすれば、
皆さんからコメントを貰えるはずです。
今の状態で待ち続けるのは、時間の無駄です。

>m(_ _)m
>
>ちなみに、Order前のカンマでない点と、SortFieldaのスペルは間違えています。

【79179】Re:2016VBAのSORTで10004のエラー
発言  マナ  - 17/5/31(水) 18:32 -

引用なし
パスワード
   ▼初心者ですいません さん:

>2003のままのSORTメソッドで今回なエラーとなり、2013のSORTオブジェクトに変更している最中です。

今まで使用していた2003のコードを提示できませんか。
本当に、それが2013(タイトルは2016?)でエラーになるのですか。

【79182】Re:2016VBAのSORTで10004のエラー
お礼  初心者ですいません  - 17/5/31(水) 22:30 -

引用なし
パスワード
   皆さま、いろいろご迷惑をおかけしました。
原因がほぼ判明しました。

原因は、SORTする際に、列数を取得しているのですが、2013の場合は10684列を無意味に取得し並び変えようとしているためメモリー制限にあたると思われます。
2003の場合は、MAXで256列であるため、メモリー内で処理ができるようです。
ただ、これは、テスト事象として判明しただけですので、取り敢えずは処理を進められるようにします。
皆さまには、ひとまずご報告と曖昧な情報を出しました事をお詫びいたします。
また、何か質問をさせて頂くかもしれませんが、宜しくお願いします。
まお、仕事のソースであるため、単純なコピペが出来ませんでした事もお詫びします。

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