Вопрос: excel 2010 vba macro ActiveCell.Formula = создает пустую ячейку при запуске


Эта макрокоманда (в цикле для размещения формулы Vlookup для каждого вновь вставленного листа) приводит к пустой ячейке при запуске:

   ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", ActiveWorkbook.Sheets(sheetname).Columns(""H:R""), 7, True)"

ячейка полностью пустая. Я искал блоги в течение нескольких выходных, и никто не упомянул об этом результате.

Я использую обходной путь, «печать» (ниже), используя ту же формулу (добавленные некоторые кавычки в некоторые блоги), и она правильно создает формулы в текстовом файле. Затем я вставляю операторы case в другой макрос, и когда он вызывается для конкретного листа, он производит правильную формулу в ячейке только отлично. Вот оператор печати, который создает операторы case в текстовом файле:

    ffile = FreeFile()
    Open MyFile For Output As ffile
    Print #ffile, "Sub SelectTabsFormulas()"
    'create Option1 Vlookups
    Print #ffile, "    Select Case sheetname"
    For FNum = LBound(MyOthExpFiles) To UBound(MyOthExpFiles)
        sheetname = Trim(Mid(MyOthExpFiles(FNum), 6, 4))
        Print #ffile, "    Case " & sheetname & ""
        Print #ffile, "        ActiveCell.Formula = ""=VLookup(""""Total Other Operating Expenses"""", '" & sheetname & "'!H:R, 7, True)"""
        FCnt = FCnt + 1
    Next FNum
    Print #ffile, "    Case Else"
    Print #ffile, "        ActiveCell.Value = """
    Print #ffile, "    End Select"
    Print #ffile, "    "
    Print #ffile, "    Return"
    Print #ffile, "End Sub"
    Close #ffile

Копирование результирующих операторов case в макрос и выдает правильную формулу в ячейке:

Sub SelectTabsFormulas()
  Select Case sheetname
    Case 112
      ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", '112'!H:R, 7, True)"
    Case 114
      ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", '114'!H:R, 7, True)"
    Case 9112
      ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", '9112'!H:R, 7, True)"
    Case Else
      ActiveCell.Value = ""
  End Select

  Return
End Sub

Конечно, мой вопрос: почему я получаю пустой результат? Есть ли настройка центра управления Windows 7 или Excel, которая предотвращает вставку формулы?


1
2017-09-05 18:03


Источник


Я исправил некоторые из ваших форматирования, но ваша первая формула выглядит не так. Пожалуйста, убедитесь, что это так; любопытное смущение прямо сейчас. - Lance Roberts
спасибо Лэнсу. Формула не вставлялась справа в первый раз или каким-то образом была изменена, когда я нажал кнопку «Отправить». Здесь снова: ActiveCell.Formula = "= VLookup (« Всего прочих операционных расходов »), ActiveWorkbook.Sheets (имя листа). Колонны (" "H: R" "), 7, True)" - Mel Dreogemeier


Ответы:


Измените его так:

ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", " & _
                     sheetname & "!H:R, 7, True)"

Ваша текущая формула не вычисляет ActiveWorkbook.Sheets (имя листа) .Columns («« H: R »), потому что она находится внутри строки, поэтому она пытается поместить ее в формулу, но объектная модель VBA недоступна из формулу.


4
2017-09-06 08:10



Лэнс ... Ваше сработало отлично! если бы я наткнулся на вас раньше, вы бы спасли меня в течение последних трех выходных, бесконечных блогов и попыток многочисленных примеров, а затем, наконец, написав 9 дополнительных макросов для реализации обходного пути. Спасибо огромное! - Mel Dreogemeier
Рад слышать. Если он решит вашу проблему, вы можете нажать на галочку под стрелками для голосования, чтобы принять ответ. - Lance Roberts
Я не вижу никаких голосовых стрелок, поэтому я могу указать положительный ответ. Завтра я проверю еще раз, чтобы узнать, как проголосовать. (посмотрел FAQ и т. д.) - Mel Dreogemeier