引用另一个工作表上的单元格时出错

我有下面的代码,出于某种原因不起作用。 问题在于使用位于工作表(2)上的信息的variablesb的定义。 该行之前的所有代码都很好用。

请注意,variablesind是全局variables,在前一个子ind上定义。

代码写在“This Workbook”选项卡上。

如果有人能分享一些问题可能会是很好的。

坦克很多。

 Sub verifica() ' verifica e pinta a vermelho os casos mal atribuidos Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets(1) Set ws2 = Worksheets(2) Dim n As Integer 'contador de incerências, Dim n1 As Integer 'contador de casos de carga em falta Dim n2 As Integer 'contador de casos de carga em excesso ws1.Activate 'verifica incoerências nos coeficientes e nos casos de carga n = 0 For i = 0 To ind Range("Case1").Offset(i, 0).Select p = 0 Do While ActiveCell.Value <> "" If Range("Case1").Offset(i, p).Value <> ws2.Range("Case2").Offset(i, p).Value Then Range("Case1").Offset(i, p).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With n = n + 1 End If p = p + 1 Range("Case1").Offset(i, p).Select Loop Next i 'verifica para cada comb, se há casos de carga em em falta ou em excesso n1 = 0 n2 = 0 For i = 1 To ind a = Range(Range("Case1").Offset(i - 1, 0), Cells(Range("Case1").Offset(i - 1, 0).Row, Columns.Count).End(xlToLeft)).Count With ws2 b = .Range(.Range("Case2").Offset(i - 1, 0), Cells(.Range("Case2").Offset(i - 1, 0).Row, Columns.Count).End(xlToLeft)).Count End With MsgBox b If a > b Then n1 = n1 + 1 ElseIf a < b Then n2 = n2 + 1 End If Next i If n = 0 Then MsgBox "Tudo OK!" Else MsgBox "Nº de incoerências: " & n End If Range("J2") = n Range("P2") = n1 Range("V2") = n2 End Sub 

尝试这个:

b = .Range(.Range("Case2").Offset(i - 1, 0), .Cells(.Range("Case2").Offset(i - 1, 0).Row, .Columns.Count).End(xlToLeft)).Count

你使用的是(耶!),但没有完全连接到所有单元格(嘘!)。 只需添加.Cells()Columns() ,你应该很好。

如果没有这个,VBA可能会感到困惑,因为Columns()指向活动工作表,但在With块中使用.Columns()将获取所使用的工作表的所有Columns() 。 …那有意义吗?