2013-09-02 2 views
1

Я имею странную проблему, пытаясь записать этот очень простой метод VbaWeird времени выполнения 1004 ошибка со строками в Excel VBA

Это прекрасно работает:

ThisWorkbook.Sheets("Analyse").Cells(i, 2) = "=HiGuys" 

Это прекрасно работает:

ThisWorkbook.Sheets("Analyse").Cells(i, 2) = "=VLOOKUP" 

Но это получает «ошибку Run Time '1004' в то время как он не должен. Я схожу с ума с этим!

ThisWorkbook.Sheets("Analyse").Cells(i, 2) = "=VLOOKUP(" 

Я пропустил что-то очевидное здесь ...?

спасибо большое!

+0

Запись одной строки или другой ячейки в ячейку не вызывает ошибку 1004. Вы делаете что-то еще. Пожалуйста, напишите весь код, если хотите получить помощь. – varocarbas

+0

@varocarbas. Да, ты можешь. Он делает неполную формулу. – Makah

+0

@ Makah?! Извините?! Ошибка 1004 вызвана написанием неправильной формулы? VBA не заботится о том, что вы положили между «», и это ошибка VBA. Пожалуйста, удалите этот ответ, потому что это явно неправильно. – varocarbas

ответ

0

Да, вы есть. :-)

Вы код

ThisWorkbook.Sheets("Analyse").Cells(i, 2) = "=VLOOKUP(" 

это iqual к

ThisWorkbook.Sheets("Analyse").Cells(i, 2).Formula = "=VLOOKUP(" 

И вы не можете сделать неполную формулу в Excel. Если вы хотите, чтобы написать только строку «= ВПР (» вы можете сделать:

ThisWorkbook.Sheets("Analyse").Cells(i, 2) = "'=VLOOKUP(" 

[С ', прежде чем все]

Если вы хотите, чтобы сделать реальную формулу, вы должны закончить его, как

ThisWorkbook.Sheets("Analyse").Cells(i, 2).Formula = "=VLOOKUP(A1,A:C,2,False)" 
+0

То, что вы говорите, не имеет никакого смысла.Он не полагается на «формулу», а просто записывает значение в ячейку (при написании, VBA даже не знает, что это формула). Даже в случае написания формулы вы не получите ошибку 1004. Это вызвано, скорее всего, из-за намерения получить доступ к неинтерминированному объекту, либо эта книга, либо «Анализ» не существует, либо я получаю значение ниже 1. В следующий раз, пожалуйста, перед тем, как написать ответ, проверьте его. – varocarbas

+0

Да, я ожидал бы, что vba не будет знать, что это формула, когда он должен записать ее на листе excel. Но, как ни странно, содержимое строки должно копировать триггеры, а не ошибку. Поэтому мои три примера: «= VLOOKUPHELLOGUYS» работает и «= VLOOKUPHELLOGUYS» («iE с кронштейном запускает сообщение об ошибке. Я схожу с ума!» – Malcoolm

+0

@varocarbas. Извините за грубость. Попробуйте ActiveSheet.Range («A1»)) .Value = "= VLOOKUP (". Я получаю ту же ошибку 1004 (Excel 2010) – Makah

0

Там должен быть какой-то уровень "защиты" участвуют:

Sub asdf() 
    ActiveCell.Value = "=VLOOKUP(" 
End Sub 

кинет "1004", но:

Sub asdf2() 
    ActiveCell.Value = "=VLOOKUP" 
End Sub 

не будет.

Это аналогично тому, как рабочий лист отвечает, если вы попытаетесь вручную ввести плохую формулу.

Смежные вопросы