別のセルにテキストに基づいてセルをロックI:VBAは - 「YES」の欄に入力されたとき、私は電子メールを送信するために、現在のコードを使用してい
Private Sub Worksheet_Calculate()
Dim FormulaRange As Range
Dim NotSentMsg As String
Dim MyMsg As String
Dim SentMsg As String
Dim MyLimit As Double
NotSentMsg = "Not Sent"
SentMsg = "Sent"
MyLimit = 0
Set FormulaRange = Me.Range("S3:S100")
On Error GoTo EndMacro:
For Each FormulaCell In FormulaRange.Cells
With FormulaCell
If IsNumeric(.Value) = False Then
MyMsg = "Not numeric"
Else
If .Value > MyLimit Then
MyMsg = SentMsg
If .Offset(0, 1).Value = NotSentMsg Then
Call Mail_with_outlook
End If
Else
MyMsg = NotSentMsg
End If
End If
Application.EnableEvents = False
.Offset(0, 1).Value = MyMsg
Application.EnableEvents = True
End With
Next FormulaCell
ExitMacro:
Exit Sub
EndMacro:
Application.EnableEvents = True
MsgBox "Some Error occurred." _
& vbLf & Err.Number _
& vbLf & Err.Description
End Sub
私もコピーするには、次のコードを持っています/特定の値を貼り付け終了時に、スプレッドシートロック:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Step 1: Protect the sheet with a password
Sheets("Sweden").Range("R3:R1000").Copy
Sheets("Sweden").Range("Q3").PasteSpecial Paste:=xlPasteValues
Sheets("Sweden").Range("A1").Select
Sheets("Sweden").Protect Password:="password"
'Step 2: Save the workbook
ActiveWorkbook.Save
End Sub
質問及び要求を「YES」列I中の任意のセルに入力されると、列H中の対応する行のセルが編集のためにロックされなければなりません灰色のマークが付いています。つまり、列Hでその値を調整することはできません。どうすればこの値をc私は持っているodes?
H = IF(I5 = "YES"、FALSE)列のセルに対してデータ検証を使用しようとしましたが、それでもセル内の値を削除できます。
また、2桁以上の小数の入力を制限するために、列Hに別のデータ検証がありますので、VBAをソリューションとして使用したいと考えています。
どのようなVBAコードを使用するのか、どこに置くべきかアドバイスしてください。下のスプレッドシートの画像を参照してください。
ありがとうございました。しかし、私は現在のシートにこのコードを追加すると(Private Sub Worksheet_Calculate()の上にすでにある)、実行時エラー12と、 'Target.Column = 9の場合にはデバッグポイントを取得し、UCase(Target)= "YES" –
まず、実行時エラー12を見たことはありません。通常は13です。しかし、私が想定していることは、最初はシート内のすべてのセルがロックされている可能性があるということですしたがって、2回目の実行時にはエラー「1004」が発生します。これを回避するには、最初のクリックプロパティからすべてのセルを選択し、「ロック」チェックのマークを解除します。 – Vityata
はい、申し訳ありませんが、実行時エラー13を書きます。また、「範囲を編集できるようにする」を使用しています。つまり、H列には特定のパスワードがあり、データを追加することができます。とにかく、シートの保護を解除し、列HとIのすべてのセルがロックされていないことを確認すると、それは動作します。しかし、ファイルを閉じようとすると、実行時にエラー13が表示され、コード内の同じ行を指しています...? –