1
私はスプレッドシートを持っています。 私がしたいのは、データ入力時にタブがレコードの最後まで移動する、つまり18col
です。それから、次の行の1列目に進みます。ユーザーがレコードの真ん中に行きたい場合は、許可されません。Excelスプレッドシートでタブオーダーを作成する方法
VBAが可能な場合は手伝ってください。
おかげ
私はスプレッドシートを持っています。 私がしたいのは、データ入力時にタブがレコードの最後まで移動する、つまり18col
です。それから、次の行の1列目に進みます。ユーザーがレコードの真ん中に行きたい場合は、許可されません。Excelスプレッドシートでタブオーダーを作成する方法
VBAが可能な場合は手伝ってください。
おかげ
だけで所望の範囲(18列)の外側を選択からユーザーを保つために必要がある場合は、あなたもVBAを必要としません。シート保護を使用し、ユーザーがロックされたセルを選択することを許可しない。 http://www.dummies.com/how-to/content/how-to-protect-cell-data-in-excel-2010.html
セルが順番に入力されるように強制する必要がある場合は、このVBAコードを追加する必要があります。 「前の」セルに値が設定されている場合は、イベントプロシージャを使用して「次の」セルのロックを解除します。そうでない場合は、現在のセルを前のセルに戻してユーザーが記入できるようにします。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngPrev As Range
Dim rngNext As Range
Const LAST_COL As Long = 18
Select Case Target.Column
Case Is = 1
If Target.Row > 1 Then
Set rngPrev = Target.Offset(-1, LAST_COL - 1)
Else
Set rngPrev = Target
End If
Set rngNext = Target.Offset(0, 1)
Case 2 To LAST_COL - 1
Set rngPrev = Target.Offset(0, -1)
Set rngNext = Target.Offset(0, 1)
Case 18
Set rngPrev = Target.Offset(0, -1)
Set rngNext = Target.Offset(1, 1 - LAST_COL)
End Select
If Not IsEmpty(rngPrev.Value) > 0 Then
Me.Unprotect
rngNext.Locked = False
' note: this line is for testing purposes to show which cells get unlocked
rngNext.Interior.ColorIndex = 6
Me.Protect
Else
rngPrev.Activate
End If
End Sub
ありがとうございました。それはうまく動作します。しかし第1列の始まりでそれは誤りを得る。私はそれを以前の値である空値に変更しました。いくつかの細胞が価値を持っていないことを認めてください。申し訳ありませんが、私はそれによく精通していません。助けてくれてありがとう – user1049518
"以前の"セルのエラー値を処理するコードを修正しました。繰り返しますが、このコードは、すべてのセルを順番に取り込むように強制する場合にのみ必要です。それ以外の場合は、最初の提案(シートをロックし、ロックされたセルを選択することはできません)が必要です。 –
レイチェルさん、本当にありがとうございました。 – user1049518