0

会計形式にする必要があるセルの範囲があります。私が抱えている問題は、ユーザーが日付を入力しようとすると、セルの形式が日付に変更され、計算が台無しになることです。ユーザーが日付を入力しようとすると、メッセージ ボックス エラーがポップアップ表示され、無効なデータが消去されるようにします。

既にデータ検証を 10 進数に設定していますが、日付 (1/2、1/2/11、または 1-2-11) を入力してテストしようとすると、Excel はセルの数値形式を分数または日付に変更し、検証エラー イベントは発生しません。

または、セル範囲の数値形式をロックして、Excel がユーザー入力に基づいてセルの形式を変換しないようにする方法はありますか?

4

2 に答える 2

1

Excel でデータ検証ツールを使用できます

検証を選択

これを使用すると、ユーザーに特定のタイプのデータをセルに入力させることができます

于 2013-07-09T17:37:28.287 に答える
0

このコードをワークシートの VBA モジュールに入れることができます。メッセージを表示し、値をクリアして、フォーマットを Accounting に戻します。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim AccountingRange As Excel.Range
Dim cell As Excel.Range

Set AccountingRange = Me.Range("B2:B20")
If Intersect(Target, AccountingRange) Is Nothing Then
    Exit Sub
End If

Application.EnableEvents = False
For Each cell In Intersect(Target, AccountingRange)
    If IsDate(cell.Text) Then
        With cell
            MsgBox "You entered a date in " & .Address & "." & vbCrLf & "Please don't do that!"
            cell.ClearContents
            .NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
        End With
    End If
Next cell
Application.EnableEvents = True
End Sub
于 2013-07-09T19:36:51.427 に答える