[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『SpecialCellsメソッド失敗』(むむむ)
あるアプリで作成した明細書を、
エクセル変換した時、エラーで止まる場合と、
そのまま変換出来る場合があります。
エラーは、
実行時エラー -2147417848(80010108)
'SpecialCells'メソッドは失敗しました。Rangeオブジェクト
と表示されます。
エラーの場所をデバッグで見てみると、
エクセル変換マクロ(抜粋)の、
' メモ行
Private Sub FcEszMemo()
Set meisai = Worksheets("明細書") Set meisaiKoNo = meisai.Cells.Range("項目No.") Set meisaiName = meisai.Cells.Range("名称") maxMeisaiRow = meisai.Cells.SpecialCells(xlLastCell).row ←ココ For cnt = 1 To maxMeisaiRow Step 1 Set msKoNo = meisaiKoNo.Offset(cnt, 0) Set msName = meisaiName.Offset(cnt, 0) If (msName.Text = "メ") Then msKoNo.HorizontalAlignment = xlLeft msName.Value = "" minCol = FcEszMeisaiMinCol() maxCol = FcEszMeisaiMaxCol() meisai.Range(meisai.Cells(msName.row, minCol + 1), meisai.Cells(msName.row, maxCol - 1)).Clear meisai.Range(meisai.Cells(msName.row, minCol), meisai.Cells(msName.row, maxCol - 1)).MergeCells = True meisai.Cells(msName.row, maxCol - 1).Borders(xlEdgeRight).LineStyle = xlContinuous meisai.Cells(msName.row, maxCol - 1).Borders(xlEdgeRight).Weight = xlMedium meisai.Cells(msName.row, maxCol - 1).Borders(xlEdgeRight).ColorIndex = xlAutomatic End If Next cnt End Sub
で止まってます。
初心者の為、
色々調べて原因の場所まで辿り着いたものの、
全く内容が分かりませんので、
私でも直せる程度の変更であれば行いたいので、
ご教授頂ければと思います。
宜しくお願いします。
< 使用 Excel:unknown、使用 OS:unknown >
SpecialCells(xlLastCell)
↓
SpecialCells(xlCellTypeLastCel)
とかはどうでしょうか?
(もこな2) 2018/03/01(木) 17:02
xlCellTypeLastCel が xlCellTypeLastCell だとして。 どちらも中身は「11」で同じなのでそこではないようだ。 (ねむねむ) 2018/03/01(木) 17:07
試してみましたが、
同様の実行エラーになりました。
(むむむ) 2018/03/01(木) 17:11
Set meisai = Worksheets("明細書") ってやってますが、そのようなシートが無いとかはないですよね?
なければ、↑でエラーになって止まるとおもうので、ここでも無いようにおもいますが・・・
とりあえず、変数の宣言はしたほうがいいとおもいますけど、エラーの原因ではないですよね。
(もこな2) 2018/03/01(木) 17:22
因みに、
使用Excelは、2016です。
ファイルの種類は、Excel 97-2003テンプレートです。
使用OSは、Win10です。
最初の質問新規登録画面で、
使用ExcelとOSを入れる前にプレビューすると、
後から入れられないんですね。
(むむむ) 2018/03/01(木) 17:26
実行エラーで停止した時、
Microsoft Excel は動作を停止しました。
問題が発生したため、プログラムが正しく動作しなくなりました。
プログラムは閉じられ、解決策がある場合はWindowsから通知されます。
と、Excelプログラム自体も終了となってしまいます。
(むむむ) 2018/03/01(木) 18:09
> 実行時エラー -2147417848(80010108) 特に誰も言ってないようだけど、このエラーって 「起動されたオブジェクトはクライアントから切断されました。」と言う意味らしい ここの過去ログにも似たような質問はあるけど・・・
googleで「80010108 メソッドは失敗しました。Rangeオブジェクト」と入力して
検索してみたら、大量のメモリを消費するとかのメモリ不足で発生することもあるらしい?
(2u) 2018/03/01(木) 20:37
すみません。説明不足でしたね。
作成時期やデータ内容に関係無く発生します。
また、同じデータでもエラーが発生する時もあれば、しない時もあります。
>googleで「80010108 メソッドは失敗しました。Rangeオブジェクト」と入力して
>検索してみたら、大量のメモリを消費するとかのメモリ不足で発生することもあるらしい?
メモリ不足で発生する可能性があるんですね。。。
コードが関係無いなら、どうも出来ないですね。
(むむむ) 2018/03/02(金) 08:22
とのことなので
〜
'maxMeisaiRow = meisai.Cells.SpecialCells(xlLastCell).row ←削除 For cnt = 1 To 65536 Step 1
〜
DoEvents '不可軽減のおまじない Next cnt
〜
って感じで全部の行にしてやるのはどうでしょう?ゴリ押し感はありますが・・・ あんまコード見てないんで減らす必要があったら減らしてください。 (774) 2018/03/02(金) 08:59
> maxMeisaiRow = meisai.Cells.SpecialCells(xlLastCell).row ←ココ を On Error Resume Next maxMeisaiRow = Cells.Find("*", , xlValues, , 1, 2).Row On Error GoTo 0 にしてmaxMeisaiRowがEmptyの場合はデータがないということです。 (seiya) 2018/03/02(金) 12:00
774さんにお教え頂いたコードを試してみたところ、
エラーが出ますが、ちゃんと明細書が出来ていました。
エラー内容は、
実行時エラー 1004
アプリケーション定義またはオブジェクト定義エラーです。
です。
seiyaさんにお教え頂いたコードでは、
何度も試してみましたが、エラー無く実行出来ました。
ありがとうございます!
今後の為にも、色々調べて読み解いてみます!
お力添え頂き本当にありがとうございました(^o^)丿
(むむむ) 2018/03/05(月) 10:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.