dポイントプレゼントキャンペーン実施中!

カテゴリが違っていたので変更しました。
複数列(8列で隣接していません。)あるセルに〇印が入力されていると、同じ行の他の列には入力できないように、×印を表示させる方法はありませんか。
×印のみでセルにロックを掛けるわけではありません。〇印の列はその行では一か所のみで、固定ではなく入力される列は任意です。

A 回答 (1件)

こんばんは!


VBAになってしまいますが、一例です。

>複数列(8列で隣接していません。)
とありますので、とりあえず
A・C・E・G・I・K・M・O列に表示するとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストして
上記列に「○」を入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim i As Long, j As Long, k As Long, M As Long, myArray

'仮に A・C・E・G・I・K・M・O 列を指定する場合
myArray = Array(1, 3, 5, 7, 9, 11, 13, 15) '←ここで列番号を指定する。
i = Target.Row
j = Target.Column
For k = 0 To UBound(myArray)
If j = myArray(k) Then
M = M + 1
End If
Next k
If Selection.Count = 1 And M > 0 Then
For k = 0 To UBound(myArray)
If Cells(i, j) = "○" Then
If j <> myArray(k) Then
Cells(i, myArray(k)) = "×"
End If
End If
Next k
End If
End Sub 'この行まで

※ 「○」が入力されたセル以外は「×」が表示されるだけで、入力は可能です。
外していたらごめんなさいね。m(_ _)m
    • good
    • 0
この回答へのお礼

早速回答ありがとうございます。
確認するとまったく意図するところで感謝します。ありがとうございました。

実際には次の通りですが、他の列があるので次のように記述しましたがうまくいきません。何分VBAに詳しくないのでご面倒をおかけしますがよろしくお願いします。

I M Q U Y AC AG AK
myArray = Array( 9, 13, 17, 21, 25, 29, 33, 37)
myArray = Array(10, 14, 18, 22, 26, 30, 34, 38)
myArray = Array(11, 15, 19, 23, 27, 31, 35, 39)
myArray = Array(12, 16, 20, 24, 28, 32, 36, 40)

お礼日時:2012/10/04 00:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!