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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

2回答

10834閲覧

「Rangeメソッドは失敗しました Worksheetオブジェクト」のエラーの解決方法

kohan

総合スコア9

VBA

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

1クリップ

投稿2020/09/24 10:29

皆様はじめまして。よろしくお願いいたします。
VBAやプログラム言語は全く初めてです。
初歩的なことで躓くことが多く、お忙しいとは存じ上げますが、ご教授いただければ幸いです。

画像を添付いたします。
ワークシートチェンジで、単純に、
T1の内容をT10に転記するとしたいのですが、

「Rangeメソッドは失敗しました Worksheetオブジェクト」と何度やっても表示されます。
調べてみると、無限ループしているとか、なんとか、、、でちんぷんかんぷんです。
単純な処理をしているだけと思っているのですが、何が間違っているのか、ご教示いただければ幸いです。
イメージ説明

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

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

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

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

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

meg_

2020/09/24 10:39

画像は見にくいので、コードは「コードの挿入」で記入した方が良いです。
kohan

2020/09/24 11:12

申し訳ありませんでした。以下のコードで入力しています。 Private Sub worksheet_change(Byval As Range) Dim i As Long For i = 1 To 30 Dim j As Long j = 1 + 2 If Sheets("計算表").Range("T2") = i Then Sheets("計算表").Range("T10") = Sheets("計算表").Range("T1") End If Next End Sub
guest

回答2

0

ベストアンサー

エラーになるの原因は下記のようなことです。

シートのChangeイベントはシートのどこかが変更されたら発生します。
VBAでシートを更新しても発生します。
Changeイベント内でシートを更新すると、Changeイベントが発生します。
すると永遠にChangeイベントが発生し続けることになり最終的にエラーになります。

Changeイベント内でシートを更新するときは、イベント発生を停止してから更新します。

Application.EnableEvents = Falseでイベント発生を停止できます。

ところで、ちゃんとコードを理解して書いてますか?

ワークシートチェンジで、単純に、

T1の内容をT10に転記するとしたいのですが、

ということなら、下記のコードです。

vba

1Private Sub Worksheet_Change(ByVal Target As Range) 2 Application.EnableEvents = False 3 Range("T10") = Range("T1") 4 Application.EnableEvents = True 5End Sub

投稿2020/09/24 10:59

編集2020/09/24 11:00
hatena19

総合スコア33790

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

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

kohan

2020/09/24 12:46

あまりにも鮮やかな回答をいただいたことに感謝です。 mattuwan様の回答も大変お役に立ちました。 初心者だから何でも許されるとは考えていませんが、ほんとにVBAやってみると、あまりにも????が連続して、前に進めなくなってしまいます。。 感謝の言葉しかお送りできませんが、画面の前で頭下げて合唱です。
guest

0

実行時エラー -'-2147417848(80010108)

んと、

セルに何かを入れる  ↓ Cangeイベント発生  ↓ マクロでT10セルに値を入れる  ↓ Cangeイベント発生 ↓ マクロでT10セルに値を入れる  ↓ Cangeイベント発生  ↓ 以下無限に続く

この流れが分かりますか?

Worksheet_Changeのイベントプロシージャ内で、
セルの内容を変えるようなことを書くと、
次々と無限にイベントが発生してしまい、
最終的にはエクセルが作業するメモリー領域がいっぱいになってしまい、
エラーで止まります。

こういう場合は、
イベントを一時的に無効にしてしまうことで、回避します。

【エクセルVBA】ChangeイベントとEnableEventsプロパティで部分一致検索をする方法

投稿2020/09/24 11:07

mattuwan

総合スコア2136

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問