• ベストアンサー

オブジェクト変数またはwithブロック変数が設定されてません

またまた おねがいします。 x に特定セルを入れてあります。 コピーし、形式を選択して貼り付けで 値だけ、行列を入れかえる・・・と考え、 下記の記述になりました。 しかし、実行してみると エラーで 「オブジェクト変数またはwithブロック変数が設定されてません。」 と、でます。 x.PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

この質問には質問に載せた以前の部分を載せる必要があるのじゃないかと思う。 また下記後半に貼り付け先に疑問を持ったので記してみる。杞憂と思うなら無視していただいて結構。 (私は、この問題をVBAでやるのは結構難しいなと思ったので) ーー それは(1)コピーする範囲指定の問題。 私は Sub test01() Set x = Application.InputBox("範囲", Type:=8) Set y = Application.InputBox("貼り付け先", Type:=8) x.Copy If Intersect(x, y) Is Nothing Then y.Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Else MsgBox " 貼り付け先訂正" End If End Sub としてみた。これで1セル以上は絶対に指定されるので、「コピー元がなし」は、なくなると思う。 ーー (2)トランスポーズして張り付ける先(極端に言えば左上隅セル) だが、コピー元との位置関係で適当でないとエラーが出るようだ。 多分もとのコピー先の範囲と、行列を反転した範囲が共通部分を持つ場合にエラーが出るのではないかと思う。私はとりあえずINTERSECTで上記程度で、ごまかしたが、行列を反転した範囲を割り出す必要があるのかなと思うがややこしそうなので、とりあえずこのままにしますが、この点どうでしょう?

K-19New
質問者

お礼

ありがとうございます。 改めて質問をかきます。 お願いします。

その他の回答 (2)

noname#220216
noname#220216
回答No.2

xがNothingの場合は処理しないという仕様ならば If IsNothing(x) = False Then x.PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True End If としておくとエラーは回避できます。 しかし、xには必ず特定のセルが入るという仕様でしたら、 xに代入する時点で正常な値が取得できていないと思うので x = と代入している右辺のセットに間違いが無いか確認してみてください。

noname#220216
noname#220216
回答No.1

この行にエラーが出ているのでしたら、 x に正常にセルがセットされていない可能性はないでしょうか? デバッグ中にxの値をローカルウィンドウ等で確認してみては 如何でしょうか?

K-19New
質問者

お礼

ありがとうございました。 ななんと 「x は Noting 」でした。 どうしたらいいいのかな?

関連するQ&A