2013-04-30 4 views
1

Я использую версию Excel 2003.Формула Excel 2003 не вычисляется после ее изменения в VBA

Если изменить формулу с VBA, такие как:

Range("A1").Formula = "=Sheet2!B:B" 

иногда формула вычисляет и показывает правильное значение из ячейки В1 Sheet2. Однако иногда это не так. Вместо этого то, что показывает, по-прежнему остается «= Sheet2! B: B» в ячейке A1 в Sheet1, когда это должно быть значение ячейки B1 в Sheet2. Кроме того, даже если я изменил формат ячейки A1 на «Общее», каждый раз, когда я назначаю ей формулу через VBA, формат автоматически снова становится «Текст». не

Ни одна из клавиш перерасчета как F9 или Сдвига - F9 или CTRL - ALT - SHIFT - F9 работа.

Неужели кто-нибудь испытал эту проблему раньше? И кто-нибудь нашел решение?

+0

' "= Лист2 B: B"'? Вы имеете в виду '' = Sheet2! B1 "'? –

+1

Вы можете явно преобразовать диапазон в общий после назначения формулы Range («A1»). NumberFormat = «general» – Santosh

ответ

2

Попробуйте

Sub Sample() 
    With Range("A1") 
     .NumberFormat = "General" 
     .Formula = "=Sheet2!B1" 
    End With 
End Sub 
+0

Спасибо! Это решило проблему. – 2013-04-30 21:59:08

0

Похоже, что формат для этой ячейки как-то меняется (возможно, в другой части вашего кода).

Попробуйте положить эти строки перед вашей .Formula = ... линии

Sub test() 
    Debug.Print "Format: " & Range("A1").NumberFormat 
    Debug.Print "Value: " & Range("A1").Value 
    Debug.Print "Formula: " & Range("A1").Formula 
    Range("A1").Formula = "=Sheet2!B:B" 
End Sub 

И проверить Немедленную панель, чтобы увидеть, что происходит.

+0

Формат: @ Значение: Формула: – 2013-04-30 20:06:56

+0

У меня нет никакого кода, который меняет формат. только изменяя формулу этого A1. Я думаю, это само по себе. работая так. и как использовать формулу в vba, если она не работает после, я не знаю. – 2013-04-30 20:09:08

+0

@Paya, Формат @ означает, что это текст, поэтому добавление 'Formula =" = Sheet2! B: B "' вводит это как текст. Я бы предложил использовать ответ Сиддхарта, чтобы он всегда устанавливался как форматирование 'General'. –