|
▼つ〜じ〜 さん:
こんばんは。
>宜しく御願い致します。
>
>Office XP を使っております。
>
>Worksheet_Changeイベントを使って、
>シート内のあるセルに入力があったら、
>他のセルをロックするというマクロを組みました。
>
>ロックの仕方は以下のとおりです。
>
> 'ロックする
> Cells(i, 8).Locked = flg
>
>変数flgはboolean型で、
>あるセルが空文字であればfalse、
>空文字でなければTrueになります。
>
>あるセルの文字を削除すればロックが解除されますし、
>何か入力すればロックされる仕掛けです。
>
>問題はここからなのですが、
>あるセルを入力規則のリストのドロップダウンリストから入力した場合、
>ロックされないのです。
>
>マクロをステップインで確認すると、
>flg = True となっているのに、
>Cells(i, 8).LockedはFalseのままとなって次へ進みます。
>
>理由がわからずとても困っております。
>皆さんのレスをお待ちしております。
>宜しく御願い致します。
Excel2002において新規ブックの標準モジュールに以下のコードを
実行しました。
'================================================
Sub test()
Range("i1:i5").Value = Application.Transpose(Array("a", "b", "c", "d", "e"))
With Range("a1").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="=$I$1:$I$5"
End With
End Sub
これでアクティブシートのセルA1に入力規則(リスト)が設定されます。
次にアクティブシートのシートモジュールに
'=========================================================
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$A$1" Then
If .Value = "" Then
.Locked = False
Else
.Locked = True
End If
End If
End With
End Sub
というイベントプロシジャーを記述しました。
これで検証した結果、
リストから選択した場合でもLockedプロパティはTrueに設定されます。
こういう不具合の場合、コードと再現手順を記述してください。
|
|