Первый программист здесь, начал учить себя VBA несколько дней назад, чтобы написать это.Цель состоит в том, чтобы код мог ссылаться на две рабочие книги, которые не являются константами.Один выбирается пользователем, а другой запускает макрос.Я определил рабочие книги в предыдущем утверждении sub, но когда я пытаюсь сослаться на него в дополнительном утверждении ниже по строке, я получаю сообщение об ошибке «9» «индекс вне диапазона».Я пытался использовать вызов, но он также обнаружил неопределенные ошибки (может быть, я не понимаю оператор вызова).
Если у вас есть дополнительный момент, чтобы просмотреть мою формулу и убедиться, что она правильно отформатирована, это также очень поможет.Я просто знаю, что когда я туда доберусь, это станет огромной проблемой.
PS Я только что заметил, что все это время в моем коде неправильно пишется ссылка.Давай, смейся.
'''
Sub Openfile()
Dim FileToOpen As Variant, wbRefrence As Workbook
Dim wbOracle As Workbook
Set wbOracle = ThisWorkbook
FileToOpen = Application.GetOpenFilename(FileFilter:="Excel Workbooks (*.xls*),*.xls*", Title:="Open Database File")
If FileToOpen = False Then
MsgBox "No file selected, cannot continue." 'If the user does not open a file this message is displayed
Exit Sub 'If no file is selected the program stops running
End If
Set wbRefrence = Workbooks.Open(FileToOpen)
Workbooks.Open (FileToOpen) 'If a file is selected it opens that file.
Call LoopTest1
End Sub
Sub LoopTest1()
Dim BlankCell As Boolean
Dim i As Long
'Loop until a blank cell is encountered
Do While BlankCell = False
i = i + 1
If Cells(i, "C").Value = "" Then
BlankCell = True 'When it reaches a blank cell BlankCell will now be true which ends the do while formula.
End If
Application.Workbooks("wbOracle").Sheets("Cancel Requisition Lines").Range("C16").Select
'Formula for "do while" condition
Selection.Formula = "=IF(INDEX(['wbRefrence']Sheet1!'A2000:M2000',MATCH(1,(['wbRefrence']Sheet1!'D:D'=['wbOracle']'Cancel Requisition Lines'!'C16')*(['wbRefrence']Sheet1!'E:E'=['wbOracle']'Cancel Requisition Lines'!'I16')*(['wbRefrence']Sheet1!'F:F'=['wbOracle']'Cancel Requisition Lines'!'J16'),0),9)>=['wbOracle']'Cancel Requisition Lines'!M:M, ""materials supplied"","""")"
Loop
End Sub
'''