Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-字段的值到数字_Vba_Excel - Fatal编程技术网

Excel VBA-字段的值到数字

Excel VBA-字段的值到数字,vba,excel,Vba,Excel,我的报价生成器创建了一个Excel文档,我想在上面运行一个宏来保持它的计算。由于某种原因,当有数字时,它会说“数字存储为文本”。如何使用宏将它们更改为数字格式?我发现如果我在公式栏中单击一次,问题也解决了 下面的代码是我现在拥有的,但它不能解决错误 Range("A1:A" & LastRow).Select Selection.NumberFormat = "0" 列A包含一个金额(1、2、3等)。我还有一列有同样的问题,但它包含一种欧元货币,小数点后有2位 Range("I1:I"

我的报价生成器创建了一个Excel文档,我想在上面运行一个宏来保持它的计算。由于某种原因,当有数字时,它会说“数字存储为文本”。如何使用宏将它们更改为数字格式?我发现如果我在公式栏中单击一次,问题也解决了

下面的代码是我现在拥有的,但它不能解决错误

Range("A1:A" & LastRow).Select
Selection.NumberFormat = "0"
列A包含一个金额(1、2、3等)。我还有一列有同样的问题,但它包含一种欧元货币,小数点后有2位

Range("I1:I" & LastRow).Select
Selection.NumberFormat = "0.00"

谢谢你的帮助!:)


对帮助我完成这一完整问题的Siddharth多加赞扬。

尝试不同的方法:-

方式1

Selection.NumberFormat = "General" 
方式2

vStr = "1000.5"

intNum = CInt(vStr)
方式3

使用VBA将文本转换为数字 如果经常将文本转换为数字,则可以使用宏。 将按钮添加到现有工具栏,并将宏附加到该按钮。然后,选择单元格,并单击工具栏按钮

Sub ConvertToNumbers() 
  Cells.SpecialCells(xlCellTypeLastCell) _
    .Offset(1, 1).Copy
  Selection.PasteSpecial Paste:=xlPasteValues, _
     Operation:=xlPasteSpecialOperationAdd
  With Selection
     .VerticalAlignment = xlTop
     .WrapText = False
  End With
  Selection.EntireColumn.AutoFit
End Sub 

尝试不同的方法:-

方式1

Selection.NumberFormat = "General" 
方式2

vStr = "1000.5"

intNum = CInt(vStr)
方式3

使用VBA将文本转换为数字 如果经常将文本转换为数字,则可以使用宏。 将按钮添加到现有工具栏,并将宏附加到该按钮。然后,选择单元格,并单击工具栏按钮

Sub ConvertToNumbers() 
  Cells.SpecialCells(xlCellTypeLastCell) _
    .Offset(1, 1).Copy
  Selection.PasteSpecial Paste:=xlPasteValues, _
     Operation:=xlPasteSpecialOperationAdd
  With Selection
     .VerticalAlignment = xlTop
     .WrapText = False
  End With
  Selection.EntireColumn.AutoFit
End Sub 
汤姆

有三种方法可以解决这个问题

1)返回报价生成器,查看它是如何将数据保存到Excel工作表的,并在那里修改代码

2手动:突出显示范围并单击绿色三角形旁边的感叹号,然后单击“转换为数字”查看快照

3)使用此代码

Sub Sample()
Dim LastRow As Long, i As Long

LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Sheet1").Range("A1:A" & LastRow).NumberFormat = "0"

For i = 1 To LastRow
    If Val(Sheets("Sheet1").Range("A" & i).Value) <> 0 Then _
    Sheets("Sheet1").Range("A" & i).Formula = _
    Val(Sheets("Sheet1").Range("A" & i).Value)
Next i

Dim temp As Double

LastRow = Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row

Sheets("Sheet1").Range("I1:I" & LastRow).NumberFormat = "\$#,##0.00"

For i = 1 To LastRow
    If Val(Sheets("Sheet1").Range("I" & i).Value) <> 0 Then
    temp = Sheets("Sheet1").Range("I" & i).Value
    Sheets("Sheet1").Range("I" & i).ClearContents
    Sheets("Sheet1").Range("I" & i).Value = temp
    End If
Next i
End Sub
子样本()
昏暗的最后一排一样长,我一样长
LastRow=图纸(“Sheet1”)。范围(“A”和行数。计数)。结束(xlUp)。行
工作表(“Sheet1”)。范围(“A1:A”和“LastRow”)。NumberFormat=“0”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“A”&i).Value)为0,则_
图纸(“图纸1”)。范围(“A”和i)。公式=_
Val(表(“表1”).范围(“A”和“i”).值)
接下来我
双温变暗
LastRow=工作表(“Sheet1”).范围(“I”和Rows.Count).结束(xlUp).行
Sheets(“Sheet1”).Range(“I1:I”和LastRow).NumberFormat=“\$”和“0.00”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“I”&I).Value)为0,则
温度=板材(“板材1”).范围(“I”&I).值
表(“表1”)。范围(“I”和“I”)。ClearContents
板材(“板材1”)。范围(“I”和I)。值=温度
如果结束
接下来我
端接头
跟进

附加快照之前和之后

更多后续行动(重要)

如果你有不同的地区设置,那么你必须适当地照顾他们

例如,必须使用“,”表示小数。请查看快照

汤姆

有三种方法可以解决这个问题

1)返回报价生成器,查看它是如何将数据保存到Excel工作表的,并在那里修改代码

2手动:突出显示范围并单击绿色三角形旁边的感叹号,然后单击“转换为数字”查看快照

3)使用此代码

Sub Sample()
Dim LastRow As Long, i As Long

LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Sheet1").Range("A1:A" & LastRow).NumberFormat = "0"

For i = 1 To LastRow
    If Val(Sheets("Sheet1").Range("A" & i).Value) <> 0 Then _
    Sheets("Sheet1").Range("A" & i).Formula = _
    Val(Sheets("Sheet1").Range("A" & i).Value)
Next i

Dim temp As Double

LastRow = Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row

Sheets("Sheet1").Range("I1:I" & LastRow).NumberFormat = "\$#,##0.00"

For i = 1 To LastRow
    If Val(Sheets("Sheet1").Range("I" & i).Value) <> 0 Then
    temp = Sheets("Sheet1").Range("I" & i).Value
    Sheets("Sheet1").Range("I" & i).ClearContents
    Sheets("Sheet1").Range("I" & i).Value = temp
    End If
Next i
End Sub
子样本()
昏暗的最后一排一样长,我一样长
LastRow=图纸(“Sheet1”)。范围(“A”和行数。计数)。结束(xlUp)。行
工作表(“Sheet1”)。范围(“A1:A”和“LastRow”)。NumberFormat=“0”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“A”&i).Value)为0,则_
图纸(“图纸1”)。范围(“A”和i)。公式=_
Val(表(“表1”).范围(“A”和“i”).值)
接下来我
双温变暗
LastRow=工作表(“Sheet1”).范围(“I”和Rows.Count).结束(xlUp).行
Sheets(“Sheet1”).Range(“I1:I”和LastRow).NumberFormat=“\$”和“0.00”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“I”&I).Value)为0,则
温度=板材(“板材1”).范围(“I”&I).值
表(“表1”)。范围(“I”和“I”)。ClearContents
板材(“板材1”)。范围(“I”和I)。值=温度
如果结束
接下来我
端接头
跟进

附加快照之前和之后

更多后续行动(重要)

如果你有不同的地区设置,那么你必须适当地照顾他们

例如,必须使用“,”表示小数。请查看快照


可能重复尝试线程Serg,我在浏览可能的解决方案时没有发现。可能重复尝试线程Serg,我在浏览可能的解决方案时没有发现。因此,如果我在宏中添加方式3,它也应该这样做?@Siva Charan:Siva该代码无法解决问题。您在发布之前是否尝试过代码?:)因此,如果我在我的宏中添加方式3,它也应该这样做吗?@Siva Charan:Siva该代码不会解决问题。您在发布之前是否尝试过代码?:)不,我不是在复制和粘贴。我正在做你手工做的事情。“我发现,如果我在公式栏中单击一次,问题也解决了”。试试代码。我已经测试过了:)@Tom:上传了一个快照。“检查后续”@Tom:然后你必须修改范围。我的代码示例只考虑了Col A:)您可以发布数据的快照吗?让我们来看看VBA PRO!他的代码还包含一个空字段处理程序。现在帮了我几次。不,我不是在复制和粘贴。我正在做你手工做的事情。“我发现,如果我在公式栏中单击一次,问题也解决了”。试试代码。我已经测试过了:)@Tom:上传了一个快照。“检查后续”@Tom:然后你必须修改范围。我的代码示例只考虑了Col A:)您可以发布数据的快照吗?让我们来看看VBA PRO!他的代码还包含一个空字段处理程序。现在帮了我几次忙