このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Intersectメソッドは失敗しましたのエラー原因

2023年1月13日

【VBA】Intersectメソッドは失敗しました

今回はIntersectメソッドでエラーが起こる原因と対策を紹介します。

Intersectメソッドでエラーとなる原因はほとんどがシート指定のミスによるものです。

どういったケースでエラーが起こるのか見ていきましょう。

VBAが難しいと感じたら
自分で作るのが難しいと感じたらご相談ください。
ココナラにて、VBAの作成を受け付けています。
ご相談はこちらから

Intersectメソッドは失敗しましたのエラー原因

Sub IntersectError()
    '''Intersectメソッドでのエラー例
    
    Dim sht As Worksheet
    Set sht = Sheets("Sheet1")
    Dim rng1 As Range
    Set rng1 = sht.Range("A1:E5") '原因1:Sheet1上のセルを指定している
    
    Dim rng2 As Range
    Set rng2 = Range("B2:C4") '原因2:アクティブシート上のセルを指定している
    
    Dim rngIntersect As Range
    Set rngIntersect = Intersect(rng1, rng2)
    
End Sub

Intersectメソッドでエラーが起こりやすいケースを、サンプルコードとして記載しました。

Intersectメソッドは引数に異なるシート上のセルを指定すると、エラーが発生します。

サンプルコードを見ると、rng1はSheet1上のセルを指定していますが、rng2はアクティブシート上のセルを指定しています(Rangeでシート指定しないと自動的にアクティブシートとなります)

Sheet1をアクティブにした状態で実行するとエラーが起きません。

しかし、Sheet1以外をアクティブにした状態で実行するとエラーが発生します。

rng1とrng2の指定しているシートが異なるのが原因です。

Intersectメソッドのエラー対策

Sub IntersectNotError()
    '''Intersectメソッドでのエラー対策後
    
    Dim sht As Worksheet
    Set sht = Sheets("Sheet1")
    Dim rng1 As Range
    Set rng1 = sht.Range("A1:E5")
    
    Dim rng2 As Range
    Set rng2 = sht.Range("B2:C4") 'rng2もSheet1上のセルを指定する
    
    Dim rngIntersect As Range
    Set rngIntersect = Intersect(rng1, rng2)
    
End Sub

解決策はシンプルです。

rng1, rng2が別シートとならないようにすれば良いのです。

上のコードのようにrng2もSheet1のセルを指定するように変えれば解決します。

Intersectメソッドでエラーが出たときは別々のシートのセルを指定していないか確認してみましょう。

VBAが難しいと感じたら
自分で作るのが難しいと感じたらご相談ください。
ココナラにて、VBAの作成を受け付けています。
ご相談はこちらから

VBA

Posted by やろまい