質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

515閲覧

エクセル VBAエラー 91、1004 

0629happy

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/05/01 19:53

はじめまして。
エクセルのVBAを始めたばかりで、短いものを作ってみたのですがエラーが出て途方にくれています。
workbookやsheetの指定、setをつけるなど、先輩方の過去の答えも見つかる限り試したのですが、どこが悪いのかエラーが出続けてしまっています。
悪いところだらけなのかもしれませんが、ご助言だけでもいただけると助かります。

Sub 時間__加算()

Sheets("時間").Select
Dim timeplus As Range
Set timeplus = Range("G:G").Find("r5")

Range("t5").Copy
timeplus.Offset(-1, 0).PasteSpecial Paste:=xlValues, Operation:=xlAdd

Application.CutCopyMode = False
End Sub

シート「時間」のR5にある値を列Gから見つけて、
T5の数字をコピーして、
先に見つけたセルの右隣にある数字にT5の数字を足す。

そういうつもりで書いたのですが、ペーストのところで
エラー 91 「オブジェクト変数または With ブロック変数が設定されていません。」となって止まってしまいます。
急いでいるわけではないので自分なりに数時間きちんと知らべてやったつもりなのですが、どうしてもわからなかったため、質問させていただいています。
初心者の質問で申し訳ありませんが、どうか、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Set timeplus = Range("G:G").Find("r5")
のコードでは、"r5"という文字列が見つからなければtimeplusはNothing(何もないという意味かな)となります。

その後
timeplusに対して、Offsetしているので、何もないNothingに対して処理をさせているということで
「オブジェクト変数または With ブロック変数が設定されていません。」のエラーが出ます。

まぁ。。。
どうするのがいいかは、わかりませんが
とりあえず、質問文を読むと
Set timeplus = Range("G:G").Find("r5")
ではなく
Set timeplus = Range("G:G").Find(Range("R5"))
という事をしたいのかなぁ。という印象があります。

であったとしても
if timeplus is Nothing then
とかして、値が見つからなかった時の処理を記載した方が良いかもしれないですね。

投稿2022/05/01 20:03

xail2222

総合スコア1497

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0629happy

2022/05/01 21:31

xail2222さん、 丁寧に教えていただいてありがとうございます。 まだ入り口にも立っていないような初心者ですが、頂いたアドバイスも含め少しづつ頑張っていこうと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問