本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL]VBAでRangeオブジェクトを返すユーザー定義関数を作成する際の問題

文書番号: 402409

最終更新日: 1998/02/03


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP402409

概要

本文書は、Microsoft(R) Visual Basic(R) Programming System Applications Edition を使用して、Range オブジェクトを返すユーザー定義関数を作成する際の問題と回避 策をまとめています。

詳細

現象

Range オブジェクトを返すユーザー定義関数を作成し、返った Range オブジェクト
を直接 With ステートメントの引数に指定すると一般保護違反 (モジュール
VBADBCS.DLL ) が発生します。
たとえば、次のようなマクロを実行すると問題が発生します。
  Sub RangeSample()
      With GetPrivateRange()
          .Bold = True
          .Itaric = True
      End With
  End Sub
  Function GetPrivateRange() As Range
      Set GetPrivateRange = ThisWorkbook.Worksheets("Sheet1"). _
          Range("A1")
  End Function

回避策

With ステートメントの部分を修正することによって、問題を回避できます。
「現象」で示したマクロ RangeSample の場合は、次のように修正します。
  Sub RangeSample()
      Dim TempRange As Range
      Set TempRange = GetPrivateRange()
      With TempRange
          .Bold = True
          .Itaric = True
      End With
  End Sub

Keywords: KBBUG KB402409
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system