Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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在Windows 2007计算机中运行良好,但在Windows 10中不起作用_Windows_Excel_Vba - Fatal编程技术网

Excel中的VBA在Windows 2007计算机中运行良好,但在Windows 10中不起作用

Excel中的VBA在Windows 2007计算机中运行良好,但在Windows 10中不起作用,windows,excel,vba,Windows,Excel,Vba,我有点VBA Sub populateChartData() Dim i As Integer Dim j As Integer Dim finalRowSheet2 As Integer Dim k As Integer Dim n As Integer Dim Sheet2 As Worksheet Dim price As Double Dim cnt As Integer With Worksheets("Data") Set Sheet2 = Worksheets("Sheet2")

我有点VBA

Sub populateChartData()
Dim i As Integer
Dim j As Integer
Dim finalRowSheet2 As Integer
Dim k As Integer
Dim n As Integer
Dim Sheet2 As Worksheet
Dim price As Double
Dim cnt As Integer

With Worksheets("Data")
Set Sheet2 = Worksheets("Sheet2")
finalRowSheet2 = Sheet2.UsedRange.Rows.Count
For i = 2 To 5
    For j = 2 To 5
        price = 0
        cnt = 0
        For k = 2 To finalRowSheet2
            Sheet2.Cells(i, 5) = "'" & Sheet2.Cells(i, 5)
            If .Cells(i, 1) = CInt(Right(Sheet2.Cells(k, 5), 4)) And _
               .Cells(1, j) = Sheet2.Cells(k, 4) Then
                   price = price + Sheet2.Cells(k, 3) 'Col 7 if weighting is used
                   cnt = cnt + 1
            End If
        Next k
        If cnt = 0 Then
            .Cells(i, j) = 0
        Else
            .Cells(i, j) = price / cnt
        End If
    Next j

Next i
End With
End Sub
这是一个数据示例

address1    3.19 mi $1,250  studio  5/1/2017
address2    3.38 mi $950    studio  7/1/2017
address3    3.48 mi $725    studio  3/1/2017
address4    3.51 mi $850    studio  7/1/2017
它可以在Windows 2007计算机上正常工作。但当在Windows 10计算机上使用时,它会在这一行上产生
类型不匹配
错误

If .Cells(i, 1) = CInt(Right(Sheet2.Cells(k, 5), 4)) And _
           .Cells(1, j) = Sheet2.Cells(k, 4) Then

我尝试进入
控制面板>>时钟、语言和区域>>区域和语言
将语言设置为英语,但它已经设置为英语。我读到这可能是个问题。我也尝试过改变变量的类型,但到目前为止,这个错误仍然会在Windows10机器上抛出。我希望此代码在两个Windows操作系统上都能正常工作,而不会出现此错误。

在两个版本中运行此代码:

Public Sub TestMe()
    Debug.Print "Decimal -> "; Application.DecimalSeparator
    Debug.Print "Thausand -> "; Application.ThousandsSeparator
End Sub
如果结果不同,你知道该怎么办。您可以在此处阅读有关此技巧的更多信息:


在两个版本中运行此代码:

Public Sub TestMe()
    Debug.Print "Decimal -> "; Application.DecimalSeparator
    Debug.Print "Thausand -> "; Application.ThousandsSeparator
End Sub
如果结果不同,你知道该怎么办。您可以在此处阅读有关此技巧的更多信息:


检查两个版本的
thausands分隔符
十进制分隔符
。它位于控制面板的区域选项中。我将查看并返回给您。检查两个版本的
thausands分隔符
十进制分隔符
。它在区域选项中,在控制面板中。我会看一看,然后再联系你。我今天晚些时候会看一看。这实际上是在客户的计算机上,并且已经有一封电子邮件发送给他。无论哪种方式,我都会让你知道。按照控制面板的路线,你提到的设置看起来完全相同。运行此代码可能会给出不同的答案吗?对不起。我在每台机器上都得到了相同的结果。@MattCremeens-您是只复制代码并将其放入Excel文件中,还是同时复制Excel文件和代码?整个工作簿、代码和全部都在这两台机器上。目前看来,删除所有变量声明、删除
Option Explicit
并用
Val
替换
CInt
可能会起作用,但我不知道为什么。今天晚些时候我会看一看。这实际上是在客户的计算机上,并且已经有一封电子邮件发送给他。无论哪种方式,我都会让你知道。按照控制面板的路线,你提到的设置看起来完全相同。运行此代码可能会给出不同的答案吗?对不起。我在每台机器上都得到了相同的结果。@MattCremeens-您是只复制代码并将其放入Excel文件中,还是同时复制Excel文件和代码?整个工作簿、代码和全部都在这两台机器上。目前看来,删除所有变量声明、删除
Option Explicit
并将
CInt
替换为
Val
可能会起作用,但我不知道为什么。