|
▼γ さん:
>1行目から66行目までに「名前定義」をしておき(例:下記test)、
>これを利用して、その範囲の行の挿入・削除が行われたら、その動作を元に戻します。
>
><<シートモジュール>>
>Private Sub Worksheet_Change(ByVal Target As Range)
> If Intersect(Target, Rows("1:66")) Is Nothing Then Exit Sub
> If Range("myRange").Rows.Count <> 66 Then
> Application.EnableEvents = False
> Application.Undo
> Application.EnableEvents = True
> End If
>End Sub
># Application.EnableEventsを操作しているのは、
># Undoによって再度Changeイベントプロシージャが
># 呼ばれることを回避するため。
>
>(*)標準モジュールで一度だけ実行します。(もちろん手作業でも可)
>Sub test()
> ActiveWorkbook.Names.Add Name:="myRange", RefersToR1C1:="=Sheet1!R1:R66"
>End Su
γ さん、やりたかったことができました。
少し手直しして行の削除と行の挿入ができました。ありがとうございますm(__)m
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ctr As Integer
Dim ctc As Integer
Dim mystr As String
Dim myrange As Range
'オブジェクト変数 myrange にセル範囲を放り込みます
Set myrange = Target.CurrentRegion
'セル範囲の行数と列数を数えます
ctr = myrange.Rows.Count
ctc = myrange.Columns.Count
If Intersect(Target, Rows("1:66")) Is Nothing Then Exit Sub
If ctr < 66 Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub
|
|