Excel中的VBA在Windows 2007计算机中运行良好,但在Windows 10中不起作用
我有点VBAExcel中的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")
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
可能会起作用,但我不知道为什么。