Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 范围.公式问题_Excel_Vba_Excel Formula_Range - Fatal编程技术网

Excel 范围.公式问题

Excel 范围.公式问题,excel,vba,excel-formula,range,Excel,Vba,Excel Formula,Range,大家好,我有下一个问题,我有以下代码: Public Function AsentamientosCA(celda As String, cotaInst As Single, Zona As String, DensidadZona As Single, _ alturaLlenobajocelda As Single, PB As Boolean) set ws= ThisWorkbook.Worksheets("hojaDe

大家好,我有下一个问题,我有以下代码:

Public Function AsentamientosCA(celda As String, cotaInst As Single, Zona As String, DensidadZona As Single, _
                                alturaLlenobajocelda As Single, PB As Boolean)

set ws= ThisWorkbook.Worksheets("hojaDestino")
RangoFechaAs = "A7:A" & DatosFechaL.Rows.Count + 6
ws.Range(Replace(RangoFechaAs, "A", "F")).Formula = "=C7 -" & cotaInst & "-(D7/100)"

End Function

Sub test()

dim celda As String, cotaInst As Single, Zona As String, DensidadZona As Single
dim alturaLlenobajocelda As Single, PB As Boolean

cotaInst = ThisWorkbook.Worksheets("a").Range("A2").Value
''CotaInst = 240.2 in my pc
'' in other computers CotaInst = 240,2

call AsentamientosCA(400, cotaInst, "2A", 21, 90, True)
End Sub


在我的电脑中工作得很好,但当我在其他电脑中共享此代码时,它失败了,它失败的原因正是因为我的电脑中的cotaInst被取为240.2,而在其他电脑中被取为240.2,2是否有办法更改此变量,假设我的代码中只有一个外部变量


因为我想让这个公式在任何有宏的电脑上运行。我感谢你的帮助

发生这种情况是因为不同的地区设置。在您的电脑中,十进制分隔符是
,而在另一台电脑中,十进制分隔符是
。尝试以下操作(未经测试

在这里,我将
cotaInst更改为Single
,将
cotaInst更改为String
,并添加了几行来检查十进制分隔符

Sub test()
    Dim celda As String, cotaInst As String, Zona As String, DensidadZona As Single
    Dim alturaLlenobajocelda As Single, PB As Boolean
    Dim decSep As String

    decSep = Application.DecimalSeparator

    cotaInst = ThisWorkbook.Worksheets("a").Range("A2").Value

    If decSep = "." Then cotaInst = Replace(cotaInst, ",", ".")

    Call AsentamientosCA(400, cotaInst, "2A", 21, 90, True)
End Sub


Public Function AsentamientosCA(celda As String, _
                                cotaInst As String, _
                                Zona As String, DensidadZona As Single, _
                                alturaLlenobajocelda As Single, PB As Boolean)

    RangoFechaAs = "A7:A" & DatosFechaL.Rows.Count + 6
    ws.Range(Replace(RangoFechaAs, "A", "F")).Formula = "=C7 -" & cotaInst & "-(D7/100)"
End Function

先生谢谢你的回答我有一个问题,在有条件的十二月应该是“,”吗?因为公式使用英语约定,对吗?如果我没记错的话,单元格在另一台电脑中会有“,”作为十进制分隔符是的,但当另一台电脑有“,”分隔符时,分隔符会失效。我的问题是,当我使用条件时,另一台电脑是否有“,”作为分隔符十进制,这会改变吗?我的意思是如果decsep=“,”那一定是有条件的还是没有条件的?啊,是的,我明白你的意思。倒过来试试谢谢,先生,我会试试的!感谢您回答其他问题,使用range.formula是在colums中定义操作的更快方法之一,对吗?