3

ワークシート内のセルを反復処理するとき、セルの書式設定を取得するにはどうすればよいですか? これに基づいて、単一のティックを追加するか、取得した値に追加しないSQLステートメントを作成したいので

4

4 に答える 4

2

VarType()関数 が必要なようです。Vartype(Range("A1"))


わかりました。セルの書式設定ではなく、値が数値かどうかを知りたいとしますIsNumeric(Range("A1"))場合は、電話して引用していただけますかFalse


一部の数値がテキストとして DB に保存されているというコメントに基づいて、単純な式でこれを解決するつもりはありません。SQL ステートメントを作成するときに値を引用することはできませんか?

于 2013-03-12T21:25:27.173 に答える
1

VBA で以下を使用してみてください。

Range("A1").NumberFormat = "0.00" 'Sets cell formatting to numeric with 2 decimals.
Range("A1").Formula = "=Text(6, " & """0.00""" & ")" 'Looks like a number _
                                                     ' but is really text.
Debug.Print WorksheetFunction.IsNumber(Range("A1")) 'Prints False

Range("A1").Value = 6 'Puts number into the cell, which also looks like 6.00

Debug.Print WorksheetFunction.IsNumber(Range("A1")) 'Prints True

これにより、セルの書式設定プロパティに関係なく、値が実際にテキストであるか実際に数値であるかがわかります。

重要なのは、VBA 関数の IsNumeric よりも、組み込みの Excel IsNumber() 関数の方がこの目的に適しているということです。IsNumber() はセルの値が数値かどうかを示しますが、IsNumeric はセルが数値用にフォーマットされているかどうかのみを示します。

于 2018-06-13T01:31:13.890 に答える
0

セルに実際に数値が含まれているかどうかを示すセルのプロパティはないと思いますが、VarType() Excelでは数値形式のセルに文字列を含めることができ、テキスト形式のセルに数値を含めることができるため、注意が必要です。NumberFormatプロパティをオーバーライドせずに値。

いずれの場合も、セルがIsNumeric(または他の基準)であるかどうか、およびセルNumberFormatが定義可能な列挙リストに含まれているかどうかを確認するために、独立したテストが必要になる可能性があります。

 Sub numFormat()
 Dim cl As Range
 Dim numFormat As String
 Dim isNumber As Boolean

 For Each cl In Range("A1")
    numFormat = cl.NumberFormat
    isNumber = IsNumeric(Trim(cl.Value))

    Select Case numFormat
        Case "General", "0", "0.0", "0.00" ' <--- modify as needed to account for other formats, etc.
            If isNumber Then
                Debug.Print cl.Address & " formatted as " & numFormat
            End If
        Case Else
            'ignore all other cases
    End Select
 Next

 End Sub
于 2013-03-13T03:25:48.503 に答える
0

セルのフォーマットは重要ではないと思います。むしろ、データベース内のフィールドのデータ型です。セルに文字列 'foobar' があり、それを Long Integer フィールドに入れようとする INSERT INTO sql ステートメントを作成すると、目盛りに関係なく失敗します。

逆に、VARCHAR フィールドに入力する必要がある数値 (100 など) がセルに含まれている場合は、目盛り ('100' など) が必要になります。

ADO を使用している場合は、Field オブジェクトの Type プロパティをチェックして、データ型を確認します。このリストhttp://support.microsoft.com/kb/193947を使用して、タイプを確認してください。次に、フィールド タイプに応じて SQL ステートメントを設定します。

于 2013-03-13T13:47:50.767 に答える