Инструкция VBA Exce IF для сохранения файла под произвольным именем - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу установить оператор 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") и говорит:

Переменная объекта или переменная блока не установлена ​​

1 Ответ

0 голосов
/ 02 апреля 2020

По сути, мне нужно было изменить одну строку моего кода, которая в настоящее время выглядит следующим образом:

Sub SaveAsB()
Dim name As String, name2 As String, name3 As String, name4 As String, custom_name As 
String, filename As String


Dim fs As Worksheet
Set fs = Sheets("Frontsheet")


name = fs.Range("AA9")
name2 = fs.Range("D18")
name3 = fs.Range("D38")
custom_name = name & "_" & name2 & "_v." & name3 & ".0"
path = ThisWorkbook.path & "\" & ActiveWorkbook.name
If fs.Range("D38").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

Вместо If name 3.Value Я поставил If fs.Range("D38").Value = "As-built" Затем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...