То, что сказал Винсент Дж, мне очень помогло.Кажется, теперь это работает:
Call AbrirCarpeta(sFileName)
Set wbSource = Workbooks.Open(sFileName)
Debug.Print (wbSource.Name) '"Formato permisos.xlsm"
If Err.Number <> 0 Then Debug.Print ("Error number en Libro gráficas: " & Err.Number)
If Err.Number = 0 Then Debug.Print ("No ha habido error en libro gráficas")
Set Requisitos = wbSource.Worksheets("Requisitos Contenedor + ATI")
Set wbDest = ThisWorkbook 'Workbooks("Rober.xlsm")
If Err.Number <> 0 Then Debug.Print ("Error number en Libro Rober: " & Err.Number)
Set shEC = wbDest.Worksheets("Seleccion_ECs")
If Err.Number <> 0 Then Debug.Print ("Error number en hoja Seleccion_ECs: " & Err.Number)
Q = shEC.Range("1:1").Find(what:="BU Descarga (MWd/tU)", After:=Range("A1")).Column
E = shEC.Range("1:1").Find(what:="Enriq. [%]", After:=Range("A1")).Column
For i = 1 To nFilas ' Sheets("Seleccion_ECs").listaopciones.ListCount
For Z = 0 To 6
'Si %enriq está entre dos valores de enriquecimiento de la tabla requisitos
If Requisitos.Cells(41 + Z, 4).Value - Requisitos.Cells(40 + Z, 4).Value = 0 Then
Debug.Print ("Intervalo es cero:" & Requisitos.Cells(41 + Z, 2).Value & Requisitos.Cells(40 + Z, 2).Value)
ElseIf (CDbl(shEC.Cells(i + 1, E).Value) >= Requisitos.Cells(40 + Z, 4).Value) And (CDbl(shEC.Cells(i + 1, E).Value) <= Requisitos.Cells(41 + Z, 4).Value) Then
'Cuidado con volver a nombrar el workbook, así sale mal: wbSource.Requisitos.Cells(41 + Z, 4).Value
m = (Requisitos.Cells(41 + Z, 2).Value - Requisitos.Cells(40 + Z, 2).Value) / (Requisitos.Cells(41 + Z, 4).Value - Requisitos.Cells(40 + Z, 4).Value)
a = shEC.Cells(i + 1, E).Value
y = m * (CDbl(shEC.Cells(i + 1, E).Value) - Requisitos.Cells(40 + Z, 4).Value) + Requisitos.Cells(40 + Z, 2).Value
y_n = CDbl(shEC.Cells(i + 1, Q).Value)
Debug.Print ("Se ha encontrado un intervalo en:")
Debug.Print (Requisitos.Cells(41 + Z, 2).Value)
Debug.Print (Requisitos.Cells(40 + Z, 2).Value)
Debug.Print ("Enriquecimiento EC: " & CDbl(shEC.Cells(i + 1, E).Value))
Debug.Print ("Quemado EC y_n: " & y_n)
Debug.Print ("m: " & m)
Debug.Print ("y: " & y)
If y_n > 1.02 * y Then 'Si se sale en un 2 por ciento de la zona aceptada, se elimina la fila.
shEC.Rows(i + 1).Delete
Debug.Print ("Se ha eliminado un elemento")
Exit For
Else:
Exit For
End If
End If
Next Z
Next i
Единственная проблема, с которой я сейчас сталкиваюсь, - это назначить лист с диаграммой "Curva-QvsE":
Set QvsE = wbSource.Charts("Curva - QvsE")
QvsE ничего не возвращает.Я также попробовал
Set QvsE = ThisWorkbook.Charts("Curva - QvsE")
и другие формы
Спасибо за вашу помощь