|
▼Jaka さん:
>>If Target.Cells.Count <> 1 Then
>> If Target.MergeCells = False Then
>> Exit Sub
>> End If
>>End If
>>の意味がよくわかりません。
>>なぜ必要なのでしょうか?
>必要なのでしょうか?ってA1:A3までセル結合してあるって事ですから...。
>新規シートに下記コードを書いて、
>
>Private Sub Worksheet_Change(ByVal Target As Excel.Range)
> MsgBox Target.Value
>End Sub
>
>結合セルに何か入力してください。
>エラーになります。
>
>また、セルを複数選択して同時入力させて見てください。
>エラーになります。
>
>※同時入力
>例えば、複数のセルを選択後に「1」入力後、Ctrl + Ent で同時入力できます。
>
>それで、結合セルは、複数セル選択と同じ扱いになるみたいでしたので、複数セルの同時入力は全て拒否するけど結合セルは、判定させるようにしました。
>
>厳密に言うと、もっと単純でよかったのかもしれませんが、後で操作性の悪さに気づいて、これこれこうしたいですと、細かく追加されるのも嫌なので、独断でこれぐらいはあった方が良いかも程度に追加しました。
>
>操作方法の詳細が解りませんけど、更に細かい使い方に対応させようとすると、もっとコードが更に複雑になります。
>
>因みに複数同時入力が出来ないように作ってはありますが、複数のセルを選択したとき入力セルが左、もしくは上にないと反応しません。
>結合セルが入力セルであるためにこうなってしまったんですが....。
>
>チビッと修正?版
>
>Private Sub Worksheet_Change(ByVal Target As Range)
> 'MsgBox Target.Areas.Count
> If Target.Column = 1 And Target.Row <= 5 Or _
> Target.Column = 4 And Target.Row >= 3 And Target.Row <= 8 Or _
> Target.Column = 6 And Target.Row >= 5 And Target.Row <= 6 Then
> If Not (Target.Count > 1 And Target.MergeCells = False Or Target.Areas.Count > 1) Then
> If Val(Target.Cells(1).Value) >= 1 And Val(Target.Cells(1).Value) <= 4 Or _
> Target.Cells(1).Value = "" Then
> Exit Sub
> End If
> End If
> MsgBox "NG"
> Application.EnableEvents = False
> Application.Undo
> Application.EnableEvents = True
> End If
>End Sub
なるほどです。!!
ご親切に指導していただきありがとうございました。
|
|