Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > передача переменной по ссылке


Автор: hawkins 4.7.2008, 16:38
Есть такой код в VBA Excel:

Код

Public Sub ConvertLinks()
Dim F As String, c As Long, st As String
 c = 9
 For r = 5 To 47
 F = Cells(r, c).Formula
  CheckAndConvert (F)  
  Debug.Print F
 Next r
End Sub

Public Function CheckAndConvert(AFormula As String)
 If Mid$(AFormula, 1, 1) = "=" Then
   AFormula = "Formula"
   CheckAndConvert = True
  Else
   AFormula = "Value"
   CheckAndConvert = False
  End If
End Function


процедура ConvertLinks вызывается кнопкой. После вызова строки "Debug.Print F"
 в окне для всех ячеек печатается их формула, а мне надо чтобы выводилось либо "Formula"
 либо "Value". Не пойму в чем дело, переменная F вроде бы передается по ссылке.
 Подскажите как подправить код чтобы правильно работало. 

Автор: Akina 4.7.2008, 17:46
Добавь ByRef

Автор: hawkins 4.7.2008, 22:38
ByRef не помог, но проблему решил все-таки: если строку вызова процедуры записать так
 res = CheckAndConvert (F), то в F возвращается правильное значение.  Видимо такая особенность
компилятора.

Автор: LOPUH 5.7.2008, 09:50
Гы.. откуда в VBA компилятор.. smile   Наверно вы хотели сказать интерпретатор..

Автор: hawkins 5.7.2008, 10:59
Ну да, конечно, интерпретатор  smile . Вообще я на VBA совсем недавно начал кодить, до этого в основном с делфи работал, вот и путаю. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)