3

私はExcelファイルを読み、セルで次のようなテキストを取得しました:

"=- Bla Bla Bla". これは認識されず、表示されます#NAME?

したがって、セルを読み取ってデータベースに取得する必要がある場合、ファイル内のこのエラーはError 2029. スクリプトがフリーズします。=そのため、セルに文字を取得した場合、コンテンツを事前に置き換えることができる-ので、コンテンツを読み取ってエラーを取得する前に検証できます。渡れるかな!

セル検証が必要です

Private Sub Worksheet_Change(ByVal Target As Range)
    c = Target.Cells.Column
    r = Target.Cells.Row
    'validate cell
End If

ありがとうございました!

4

3 に答える 3

2

これはあなたがしようとしていることですか?

Sub Sample()
    Dim sTemp As String

    With Sheets("Sheet1")
        '~~> Check if cell has error
        If IsError(.Range("A1").Value) Then
            '~~> Check if it is a 2029 error
            If .Range("A1").Value = CVErr(2029) Then
                '~~> Get the cell contents
                sTemp = Trim(.Range("A1").Formula)
                '~~> Remove =/-
                Do While Left(sTemp, 1) = "=" Or Left(sTemp, 1) = "-"
                    sTemp = Trim(Mid(sTemp, 2))
                Loop
                '~~> Either put it in back in the cell or do
                '~~> what ever you want with sTemp
                .Range("A1").Formula = sTemp
            End If
        End If
    End With
End Sub
于 2012-08-01T14:00:08.503 に答える
0

私はそれを働かせました

'verify cell for data
Private Sub Worksheet_Change(ByVal Target As Range)
    c = Target.Cells.Column
    r = Target.Cells.Row

    If IsError(Target.Worksheet.Cells(r, c)) Then
        MsgBox "You have a validation Error!"
        Target.Worksheet.Cells(r, c) = ""
        End If
End Sub
于 2012-08-02T12:24:47.730 に答える
0

ワークシートにデータ検証を追加して、そのように入力されないようにすることもできます。[検証基準] で [カスタム] を許可し、次の式を入力します。

=NOT(OR(IF(EXACT(LEFT(TRIM(A1),1),"-"),1,0),IF(EXACT(LEFT(TRIM(A1),1),"="),1,0)))

セルに入力された値が「-」または「=」(先行スペース付き) で始まる場合、その値は受け入れられません。人が入力した場合=123、数式のように扱われ、としてのみ表示されるため、有効になります123

=セルにまたは- をまったく含めたくない場合は、データ検証式でこれを試してください。=NOW()orのような数式をキャッチすることはできませんが=-hi( #NAME?forが表示されます-hi)、 が表示されるため拒否=-123されます-123セルがTextとして書式設定されている場合、で始まる値は数式のように扱われないため、セルを含む=または内部にあるセルは拒否されます。-=

=NOT(OR(ISNUMBER(FIND("=",A18)),ISNUMBER(FIND("-",A18))))
于 2012-08-01T14:21:32.507 に答える