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

Тема в разделе "Visual Basic", создана пользователем -, 13 май 2008.

  1. Гость

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

    etc Гость

    Никто не сталкивался. :)
     
  3. Гость

    Имеется ввиду передача последовательно параметров,те больше чем две функции или процедуры по одной ветке :unsure: :) те если код помещаю в третью процедуру между первой и второй как промежуточную то неправильно отрабатывает если код в первой процедуре то все работает :rolleyes: :blink:
     
  4. etc

    etc Гость

    Вы бы показали, а то както на слух не воспринимается :)
     
  5. Hetman

    Hetman Гость

    При этом есть вероятность того, что где-то ошибка, лучше приведи код
     
  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
     
Загрузка...

Поделиться этой страницей