- 締切済み
マクロエラー 1004 1004 アプリケーション定義またはオブジェクト定義のエラーです。
下記のプログラムで 自分のパソコンでは正常に動くのですが 違うパソコンでは エラー1004、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。 セルの書式設定 → 表示形式 を変更するとエラーがでてしまいます。 自分のパソコンでは何をしてもエラーは出ません。 エラーの対処の仕方を調べたのですがわかりませんでした。 教えていただけるとありがたいです。 以下作ったプログラムです。 Private Sub CommandButton2_Click() Dim myShp As Shape Dim myR As Range, SR As Range On Error Resume Next Set myR = Range("G87:K96") If Err.Number <> 0 Then Exit Sub On Error GoTo 0 For Each myShp In ActiveSheet.Shapes Set SR = Range(myShp.TopLeftCell, myShp.BottomRightCell) If Not Intersect(SR, myR) Is Nothing Then myShp.Delete End If Set SR = Nothing Next Set myR = Nothing End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- end-u
- ベストアンサー率79% (496/625)
『作成したマクロの動作の確認方法』 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html #補足要求です。 元の質問文では >セルの書式設定 → 表示形式 >を変更するとエラーがでてしまいます。 >: >Private Sub CommandButton2_Click() #1の補足では >プログラム内の Cells(83, 6)には数式が入っています。 >この数式のセルにカーソルを合わせてEnterを押すと >1004のエラーが出てきます。 どちらが正しいのですか? >また、正常に動くパソコンと、エラーが出るパソコンとでは、Excelのバージョンが違ってたりしませんか? 応答なしですか? >まずはエラーの原因となっているShapeを調べてみる事です。 ...ってやってないんですよねー? って事はさておき、最初に訊いておくべきなのは以下の内容でした。 『実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。』 というエラーメッセージが出た時、メッセージボックス内の[デバッグ]ボタンをクリックすると、 VisualBasicEditorのコードウィンドウで、エラー箇所が黄色く反転していませんか? そのエラーが発生しているコードとエラー箇所を提示してみてください。 『この数式のセルにカーソルを合わせてEnterを押すと1004のエラーが出てきます。』 この文章通りなら、シートモジュールかブックモジュールのSelectionChange関連イベントがありそうですけど その辺りはどうなんでしょうか? ChangeイベントやCalculateイベントコードは無いのでしょうか? Cells(83, 6)にはどのうような数式が入っていますか?
- end-u
- ベストアンサー率79% (496/625)
まずはエラーの原因となっているShapeを調べてみる事です。 Drop Down...あたりじゃないですかね? Private Sub CommandButton2_Click() Dim myShp As Shape Dim myR As Range, SR As Range On Error Resume Next Set myR = Range("G87:K96") If Err.Number <> 0 Then Exit Sub On Error GoTo 0 For Each myShp In ActiveSheet.Shapes Debug.Print myShp.Name '■ Set SR = Range(myShp.TopLeftCell, myShp.BottomRightCell) If Not Intersect(SR, myR) Is Nothing Then myShp.Delete End If Set SR = Nothing Next Set myR = Nothing End Sub また、正常に動くパソコンと、エラーが出るパソコンとでは、Excelのバージョンが違ってたりしませんか?
補足
早速の返信ありがとうございます。 マクロについては初心者なもので・・・。 下記のプログラムで作成したQRコードのオートシェイプを消したいのですが 1004というエラーが出てしまいます。 プログラム内の Cells(83, 6)には数式が入っています。 この数式のセルにカーソルを合わせてEnterを押すと 1004のエラーが出てきます。 何が原因なのかわかりません、 申し訳ありませんが教えてください。 Private Sub CommandButton1_Click() Dim MiBar As Mibarcd.Auto Dim Code, Work As String Work = Trim(Cells(83, 6).Text) Code = Code + StrConv(Work, vbNarrow) Code = Code + asu 'マクロを実行しているファイル名を取得 Work = ActiveWorkbook.Name Code = Code + StrConv(Work, vbNarrow) Range("B99") = Code '***** MiBarcodeを起動してバーコードを作成する ***** 'Mibarcodeのオートメーションサーバオブジェクトを作成 Set MiBar = New Mibarcd.Auto '基本オプションを設定 MiBar.Show (0) 'ウィンドウを隠す MiBar.CodeType = 12 'QR2コード MiBar.QRversion = 10 'QR2コードのバージョン MiBar.QRErrLevel = 1 'QR2コードの誤り訂正レベル0:L,1:M,2:Q,3:H MiBar.HMargin = 2 'QR2コードの左右マージン MiBar.VMargin = 2 'QR2コードの上下マージン MiBar.BarScale = 10 'QR2コードのバーコードサイズ MiBar.CopyType = 1 '拡張メタファイル形式画像 'コードをセット MiBar.Code = Code 'バーコードを成 MiBar.Execute 'カーソルをセットする処理 Cells(87, 8).Activate 'カーソル位置に貼り付け ActiveCell.PasteSpecial Selection.ShapeRange.Left = Range("H88").Left Selection.ShapeRange.Top = Range("H88").Top '縮小 Selection.ShapeRange.ScaleWidth 1, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 1, msoFalse, msoScaleFromTopLeft 'オブジェクトを破棄 Set MiBar = Nothing End Sub