Больше чем две функции для Vba...excel2003

  • Автор темы Guest
  • Дата начала
G

Guest

#1
:) Никто не сталкивался если две функции или процедуры для VBA то или теряется глобальная переменная или еще что нибудь в общем неккоректно работает... :)
 
G

Guest

#3
Имеется ввиду передача последовательно параметров,те больше чем две функции или процедуры по одной ветке :unsure: :) те если код помещаю в третью процедуру между первой и второй как промежуточную то неправильно отрабатывает если код в первой процедуре то все работает :rolleyes: :blink:
 
E
#4
Вы бы показали, а то както на слух не воспринимается :)
 
H

Hetman

#5
При этом есть вероятность того, что где-то ошибка, лучше приведи код
 
G

Guest

#6
Ладно Ok кусок кода из модуля1 :)
комментарии
Public code As String’code –глобальная переменная обьявленная в Модуле4 в разделе General Declaration
Public formname As String-тоже самое что code.

embed ReqString, formname- Public Sub в Модуле2

При такой постановке кода все работает:
fieldname = "&debt1"
fieldvalue = "1"


priznak = "Debt1"
str = ""
debt = masiv(Debt1, priznak)
'столбец
Row = 2
'строка
j_initial = 4
j = 4
'нач позиц в массиве 1я
k = 1
str = ""
'кол столбцов в таблице с нужными для взятия полями
ActiveSheet.Range("AL1").Select
EndRow = ActiveSheet.Range("AL1").Value2

'While ActiveSheet.Range("A" + CStr(j)).Value2 = Empty Or ActiveSheet.Range("A" + CStr(j)).Value2 = ""
'While Not (ActiveSheet.Range("A" + CStr(j)).Value2 = Empty) Or Not (ActiveSheet.Range("A" + CStr(j)).Value2 = "")
For i = Row To EndRow ' цикл до конца таблицы

str = str & "&" + debt(k) + "="
'если есть значение иначе пустое
If (ActiveSheet.Cells(j, i).Value2 <> "") Then
debt(k) = ActiveSheet.Cells(j, i)
Else
debt(k) = ""
End If
str = str & debt(k)
k = k + 1
If Range("A" + CStr(j)).Value2 = Empty Or Range("A" + CStr(j)).Value2 = "" Then
GoTo label
End If
If i = EndRow Then

str = str & "&ReqId" + "=" + code
str = str & fieldname + "=" + fieldvalue


str = "&__Click=0" + str
ReqString = str

formname = "debt"
embed ReqString, formname
j_initial = j_initial + 1
j = j_initial

i = Row - 1

k = 1
str = ""
debt = masiv(Debt1, priznak)
End If
Next i
' Wend

При такой постановке кода не работает,(тоже самое только с While) While в дебагере значения не имеет, в функцию embed в обеих случаях передается одно и то же значение ReqString,разница лишь в значении code ,потому что в первом случае это значение доступно из Global во втором случае это значение надо передавать в функцию и даже в этом случае кажись это значение изменяется каким то странным образом хотя для результата функции это значения не имеет
fieldname = "&debt1"
fieldvalue = "1"
Call debet(fieldname, fieldvalue, code)

Public Function debet(fieldname, fieldvalue, code)
Dim Debt1(1 To 7) As Variant
priznak = "Debt1"
str = ""
debt = masiv(Debt1, priznak)
'столбец
Row = 2
'строка
j_initial = 4
j = 4
'нач позиц в массиве 1я
k = 1
str = ""
'm = 1
'кол столбцов в таблице с нужными для взятия полями
ActiveSheet.Range("AL1").Select
EndRow = ActiveSheet.Range("AL1").Value2

'While ActiveSheet.Range("A" + CStr(j)).Value2 = Empty Or ActiveSheet.Range("A" + CStr(j)).Value2 = ""
While Not (ActiveSheet.Range("A" + CStr(j)).Value2 = Empty) Or Not (ActiveSheet.Range("A" + CStr(j)).Value2 = "")
For i = Row To EndRow ' цикл до конца таблицы

str = str & "&" + debt(k) + "="
'если есть значение иначе пустое
If (ActiveSheet.Cells(j, i).Value2 <> "") Then
debt(k) = ActiveSheet.Cells(j, i)
Else
debt(k) = ""
End If
str = str & debt(k)
k = k + 1
'If Range("A" + CStr(j)).Value2 = Empty Or Range("A" + CStr(j)).Value2 = "" Then
' GoTo label
' End If
If i = EndRow Then

str = str & "&ReqId" + "=" + code
str = str & fieldname + "=" + fieldvalue


str = "&__Click=0" + str
ReqString = str

formname = "debt"
embed ReqString, formname
j_initial = j_initial + 1
j = j_initial

i = Row - 1

k = 1
str = ""
debt = masiv(Debt1, priznak)
End If
Next i
Wend

End Function