文字/值的VBA测试格式

时间:2018-08-07 12:39:03

标签: vba excel-vba

我正在制作一个将DXF文件作为文本导出到工作表中,然后从中获取一些值的子程序。

我有两个问题:
    ->第一个是如何保持我在工作表中导出的值的格式?
    ->第二个是如何测试值的格式?

我要导出的文件中具有不同类型的值:

  • 文字
  • 整数“ 10”,“ 20”,“ 21”等。它告诉我之后是什么样的价值
  • 我想要的实际值(该类型由整数给出),写为xxx.xxxx(例如,“ 0.0000”,“ 50.0000”或120.0000,因此总是在点后4个零) 在文件中看起来像这样:

    连续
    10
    50.0000
    20
    120.0000
    30
    0.0000
    40
    50.0000
    50
    0.0000
    51
    180.0000
    62
    5
    0

所以我的问题是excel导出时不会保持我的值不变。如果它是50.0000,它将写入50,然后我就无法区分值的类型...我发现的所有解决方案都是将所有数据都以#.000格式获取,但这并不能解决我的问题。

这是我的潜艇:

Sub ImportDXF()
Dim fName As String
ActiveSheet.Columns(1).ClearContents

fName = Application.GetOpenFilename("DXF Files (*.dxf), *.dxf")
If fName = "False" Then Exit Sub
Dim v As Variant
Dim r As Long
r = 2 'from row 2

Open fName For Input As #1
Do While Not EOF(1)
    Input #1, Line$
    Rows(r).Columns(1) = Trim(Line$)
    r = r + 1
Loop
Close #1
End Sub  

然后我有另一个子程序,它将使用导出的值做一些事情,因此我想测试这是整数值还是浮点数。

1 个答案:

答案 0 :(得分:1)

从输入DXF文件中读取每个值时,您必须测试每个值。然后,对具有该值的单元格应用适当的格式,以使其在电子表格中正确显示。

Sub ImportDXF()
    Dim fName As String
    ActiveSheet.Columns(1).ClearContents

    fName = Application.GetOpenFilename("DXF Files (*.dxf), *.dxf")
    If fName = "False" Then Exit Sub
    Dim v As Variant
    Dim r As Long
    r = 2                                        'from row 2

    Open fName For Input As #1
    Do While Not EOF(1)
        Input #1, Line$
        If IsNumeric(Line$) Then
            '--- we have a number, but what kind?
            If InStr(1, Line$, ".", vbTextCompare) > 0 Then
                '--- we have a VALUE, so format to show the decimals
                Cells(r, 1).NumberFormat = "#0.0000"
            Else
                '--- we have a value ID, format with no decimals
                Cells(r, 1).NumberFormat = "#0"
            End If
        Else
            '--- we have text
            Cells(r, 1).NumberFormat = "@"
        End If
        Cells(r, 1).Value = Trim(Line$)
        r = r + 1
    Loop
    Close #1
End Sub