当我尝试比较两个不同工作簿的值时,我发现了一些困难。代码必须删除不符合if条件的行,也就是说,如果工作簿“ Nuevo hoja decálculo”中的值介于另一个工作簿“ Formato CO-08a”的值之间,则它将继续计算一些变量(m,y_n,y),如果该值确实满足第二个if条件,则该行将被删除。
我还尝试使用同一工作簿中的工作表,将工作簿“ Formato CO-08a”中的工作表复制到工作簿“ Nuevo hoja de calculo”中。但是它仍然不起作用,因为该程序无法从此复制的工作表中读取值。我在下面编写的示例使用同一工作簿中的工作表,但我的目标是使用2个不同的工作簿。
For i = 1 To Sheets("Seleccion_ECs").listaopciones.ListCount
Line1:
For Z = 0 To 7
Debug.Print Z
If (Sheets("Seleccion_ECs").Cells(i + 1, E).Value >= ThisWorkbook.Sheets("Requisitos Contenedor + ATI").Cells(40 + Z, 4).Value) And (Sheets("Seleccion_ECs").Cells(i + 1, E).Value <= ThisWorkbook.Sheets("Requisitos Contenedor + ATI").Cells(41 + Z, 4).Value) Then
m = (ThisWorkbook.Sheets("Requisitos Contenedor + ATI").Cells(41 + Z, 2).Value - ThisWorkbook.Sheets("Requisitos Contenedor + ATI").Cells(40 + Z, 2).Value) / (ThisWorkbook.Sheets("Requisitos Contenedor + ATI").Cells(41 + Z, 4).Value - ThisWorkbook.Sheets("Requisitos Contenedor + ATI").Cells(40 + Z, 4).Value)
y = m * (Sheets("Seleccion_ECs").Cells(i + 1, E).Value - Sheets("Requisitos Contenedor").Cells(40 + Z, 2).Value) + Sheets("Requisitos Contenedor").Cells(40 + Z, 4).Value
y_n = Sheets("Seleccion_ECs").Cells(i + 1, Q).Value
Debug.Print ("Se ha encontrado un intervalo")
If y_n > 1.02 * y Then 'Si se sale en un 2 por ciento de la zona aceptada, se elimina la fila.
Worksheets("Seleccion_ECs").Rows(i + 1).Delete
GoTo Line1
Else:
i = i + 1 'Preguntar si vale esto teniendo el for i=0
GoTo Line1
End If
End If
Next Z
Next i
提前谢谢
答案 0 :(得分:0)
我建议使用以下技术来引用多个工作簿/工作表中的单元格。当用户可以更改活动的工作簿/工作表时,这在较长的处理会话中尤其安全,并且通过减少键入次数还可以节省您的时间。
Dim wbSource as Workbook, wbDest as Workbook
Dim shSEC as Worksheet, shREQ as Worksheet
Set wbSource = Thisworkbook
Set wbDest = <.... this is the reference of the other file you're gonna use>
Set shSEC = wbSource.Worksheets("Seleccion_ECs")
...
If shSEC.Cells(i + 1, E).Value >= shREQ.Cells(40 + Z, 4).Value) ...
您应该在每个Set
之后插入If Err.Number <> 0 Then <error hadler>
来检查是否成功,以确保在循环之前一切正常。
您可以将GoTo ...
替换为Exit For
。编将以相同的方式工作,但它稍微优雅一些:)