Я хочу установить оператор IF для макроса сохранения файла под произвольным именем. Проблема в том, что этот файл нельзя сохранить только под одним именем. Есть строка, которая требует другого имени.
Для этой цели я подготовил код, как показано ниже, который, к сожалению, не работает.
Sub SaveAsB()
Dim name As String, name2 As String, name3 As String, name4 As String, custom_name As String ', path As String
Dim fs As Worksheet
Set fw = Sheets("Frontsheet")
name = fw.Range("AA9")
name2 = fw.Range("D18")
name3 = fw.Range("D38")
custom_name = name & "_" & name2 & "_v." & name3 & ".0"
'path = ThisWorkbook.path & "\" & ActiveWorkbook.name
If name3.Value = "As-built" Then
custom_name = name & "_" & name2 & "AS-BUILT"
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs filename:=custom_name, FileFormat:=52
End Sub
Я получаю ошибку: Неверный квалификатор - для строки If name3.Value = "As-built" Then
Должен ли я основывать свой оператор IF непосредственно на значении ячейки?
ОБНОВЛЕНО:
Sub SaveAsB()
Dim name As String, name2 As String, name4 As String, custom_name As String
Dim fs As Worksheet
Set fw = Sheets("Frontsheet")
Dim name3 As Range
name = fw.Range("AA9")
name2 = fw.Range("D18")
name3 = fw.Range("D38")
custom_name = name & "_" & name2 & "_v." & name3 & ".0"
'path = ThisWorkbook.path & "\" & ActiveWorkbook.name
If name3.Value = "As-built" Then
custom_name = name & "_" & name2 & "_v." & name3 & ".0 AS-BUILT"
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs filename:=custom_name, FileFormat:=52
End Sub
Теперь отладчик выделяет name3 = fw.Range("D38")
и говорит:
Переменная объекта или переменная блока не установлена