ここから本文です

当方マクロ初心者で、エクセルのマクロについての質問です。

aim********さん

2017/4/2215:34:13

当方マクロ初心者で、エクセルのマクロについての質問です。

こちらで聞いて教えていただいたマクロで実行をするとエラーが出てしまいました。
調べてみましたが原因が分からないので教えていただけると助かります。


(このマクロを教えていただいた方へ
自己解決したからといって、返信にて自分の質問を削除したことが気に障りましたら、申し訳ありませんでした。丁寧に教えていただいたこと、感謝しております。こちらの投稿を見ていただけていることを願います。ありがとうございました。)




以下のマクロを実行すると、
実行時エラー'424'
オブジェクトが必要です
と出てしまいます。

マクロは標準モジュールに書きました。
エクセルは2010を使用しています。

ネットに繋げていないPCで試験的に作業をしているので、教えていただいたマクロをコピペできず、綴り間違いがあるかもしれません…。それもあり、入力ミスなのか、マクロを書く場所が悪いのか分からず…。
以下のマクロはPCで打ったものを携帯で打ち直しています。綴りには注意をして打ちました。よろしくお願いします。



Sub 選択印刷()
Dim lastRow As Long
Dim st As Worksheet, obj As OLEObject, cbx As MSForms.CheckBox
Dim i As Long, rng As Range

'Sheet4の2行目以降を一旦クリアする
With Worksheets(PrintSheetName)
lastRow = .Range("B" & Rows.Count).End(xlUp).Row
If lastRow > 1 Then
.Range("2:" & lastRow).ClearContents
End If
End With

'Sheet1からSheet3について繰り返す
For Each st In Worksheets
If st.Name <> PrintSheetName Then

st.Activate
Set selRng = Nothing

'シート内の全てのチェックボックスについて繰り返す
For Each obj In st.OLEObjects
Set cbx = obj .Object

'チェックボックスがチェックされていたとき
If cbx.Value = True Then

'チェックボックスが貼り付けられているセルを取得する
Set rng = obj .TopLeftCell

'そのセルと同じ行のA列について、空欄のセルの範囲を求める
i = rng .Row + 1
Do Until st.Range("A" & i).Value <>""

i = i + 1
If i > st.Range("B" & Rows.Count).End(xlUp).Row Then Exit Do
Loop
Set rng = Range(rng, st.Range("A" & i - 1))

'セル範囲をA列からH列まで拡張する
Set rng = mg.Resize(, 8)

'セル範囲をSheet4の最下行の次の行にコピーする
rng.Copy Worksheets("sheet4").Range("B" & Rows.Count).End(xlUp).Offset(1, - 1)
End If
Next obj

End If
Next st

'Sheet4にデータが転記されていたらSheet4をアクティブにして印刷する
With Worksheets(PrintSheetName)
If .Range("B" & Rows.Count).End(xlUp).Row > 1 Then
.Activate
.PrintPreview

End If
End With
End Sub

閲覧数:
80
回答数:
2

違反報告

ベストアンサーに選ばれた回答

hmm********さん

2017/4/2215:55:39

何処でエラーになるか、を書かないと
このプロシージャの他に別のプロシージャが無いとして
Worksheets(PrintSheetName)
は変数PrintSheetNameに値が代入されて
いないとエラーになりますね
PrintSheetName="実際に印刷するシート名"
を追加する

  • 質問者

    aim********さん

    2017/4/2216:30:15

    返信ありがとうございます。
    PrintSheetNameのシート追加しました。

    そこで実行をすると、変数が定義されていない、と出て、
    'Sheet1からSheet3について繰り返すの部分の4行目
    selRng =
    が選択されます。
    これはまた追加入力が必要なんでしょうか?

    また、前の投稿にて、対応が失礼にあたり申し訳ありませんでした。
    言い訳をさせていただくと、同じ変数とのことでしたが、解決方法が分からず自分なりに調べていたところ、別の方からの異なる方法でのマクロの返信があり、そちらに気がうつってしまい、返信が後回しになってしまいました。本当に申し訳ありませんでした。

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2017/4/22 18:21:42

分かりやすい説明とともに丁寧に教えていただき、ありがとうございました。お陰様で業務改善することができます。本当に感謝しております。また、この場を借りまして、元になるマクロを教えていただいたnagato_blue_noah様にも感謝致します。ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

hig********さん

2017/4/2216:12:23

あっちの返信は削除して、こっちの返信は無視して、身勝手過ぎませんか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる