如何获取VBA中单元格的格式?

在工作表中通过单元格迭代时,如何获取单元格上的格式设置? 因为基于这个,我想build立一个SQL语句来添加单个滴答或不添加到retreived的值

听起来就像你需要VarType()函数。 Vartype(Range("A1"))


好的,所以你不想知道单元格的格式设置,但是这个值是否是数字。 你可以调用IsNumeric(Range("A1"))并引用它,如果False


根据你的评论,有些数字是作为文本存储在数据库中的,你不会用一个简单的公式来解决这个问题。 你不能在构buildSQL语句时引用这些值吗?

我不认为有单元格的任何属性指示单元格是否实际包含数值,虽然VarType() 可能会有所帮助,但会变得棘手,因为Excel将允许数字格式的单元格包含string,并且文本格式化的单元格包含数值,而不重写NumberFormat属性。

无论如何,你可能需要一些独立的testing来确定一个单元格是否是数字(或其他标准),以及它的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 

我不认为这个单元格的格式是重要的。 相反,这是数据库中字段的数据types。 如果在单元格中有string“foobar”,并且您创build了一个INSERT INTO sql语句,该语句试图将其放入长整型字段中,则无论是否使用标记,它都将失败。

相反,如果一个单元格包含需要进入VARCHAR字段的数值(如100),它将需要tickmarks(如“100”)。

如果您使用的是ADO,请检查Field对象的Type属性以确定数据types。 使用此列表http://support.microsoft.com/kb/193947来查看types是什么&#x3002; 然后根据字段types设置SQL语句。