機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA > VBAのエラー

この配列は固定されているか、または一時的にロックされています



Sub Sample1()
    Dim tmp() As String, s As Variant, n As Long
    tmp = Split("tanaka,suzuki,yamada", ",")
    For Each s In tmp
        n = UBound(tmp) + 1
        ReDim Preserve tmp(n)
        tmp(n) = s & "様"
    Next s
End Sub



あまり出会わないエラーでしょうね。
ヘルプで解説されているように、他のプロシージャに配列を渡すようなときに発生するようですが、そうした使い方は決して一般的ではないでしょう。ある配列を複数のプロシージャで共有するようなときは、引数で渡すよりも広域変数にした方が管理しやすいですからね。

配列を引数で渡すとき以外では、上のSample1のように、For Nextステートメントで操作している配列を、For Each内でReDimするようなときでしょうか。For Eachのコレクションに指定した配列はロックされますので、For Eachが終わるまでは変更できません。For Nextならロックされないらしいです。



このエントリーをはてなブックマークに追加