2013-08-01 4 views
0
Sub AddNumbersOnOneRow 
    Const s_Field_ColA = "ColumnA" 
    Const s_Field_ColB = "ColumnB" 
    Const s_Field_ColC = "ColumnC" 
    Const s_Field_ColD = "ColumnD" 


    Dim iPsDepth As Integer 
    Dim iPsColA As Integer 
    Dim iPsColB As Integer 
    Dim iPsColC As Integer 
    Dim iPsColD As Integer 

    Dim lRow As Long 
    Dim dDepth As Double 
    Dim ColumnD As Double 
    '------------------------ 
    'Determine the field positions of the necessary fields in the array. 

    If InitFieldsFnB(gs_Depth, iPsDepth, _ 
        s_Field_ColA, iPsColA, _ 
        s_Field_ColB, iPsColB, _ 
        s_Field_ColC, iPsColC) _ 
    Then 
    'One or more of the required fields missing from the table. 
    Exit Sub 
    End If 

    With gINTRules.GridData 

    iPsDepth = .FieldCol("Depth") 
    iPsColA = .FieldCol("ColumnA") 
    iPsColB = .FieldCol("ColumnB") 
    iPsColC = .FieldCol("ColumnC") 
    iPsColD = .FieldCol("ColumnD") 


    For lRow = 1 To glNumRows 
     ColumnD= CDbl(gsDataA(iPsColA, lRow))+ CDbl(gsDataA(iPsColB, lRow)) 

     gsDataA(iPsColD, lRow)= CStr(ColumnD) 

    Next lRow 
    End With 

End Sub 

이 매크로를 실행할 때 오류가 발생하지 않았습니다. 그러나이 매크로는 대답 D 열에 아무것도주지 않습니다.테이블 열에서 VBA 계산을 수행하지 못했습니다.

열 A에 추가 할 열 A 및 열 B ! [이것은 내 표입니다, 나는 열 A와 ColumnB를 columnD에 넣습니다. . 나는 매크로를 실행하면하지만

내가 다음 줄이 나에게 문제를주고있는 것으로 생각] 아무것도 얻을 :

For lRow = 1 To glNumRows 
     ColumnD= CDbl(gsDataA(iPsColA, lRow))+ CDbl(gsDataA(iPsColB, lRow)) 

     gsDataA(iPsColD, lRow)= CStr(ColumnD) 

Next lRow 

은 어떤 도움이 크게 감사한다!

당신이 다른 곳에서 값을 설정하지 않는 한
'#LibInclude "common procedures" 

Option Explicit 
Public Sub Main 
    Dim gsDataA As Variant 
    Dim glNumRows As Integer 
    With gINTRules.GridData 
    'Put the grid data into a working string data array. 
    gsDataA = .DataArray 
    glNumRows = UBound(gsDataA, 2) 

    'Put the modified data array back into the input grid. 
    .DataArray = gsDataA 
    'Success is True if there were no errors. 
    gINTRules.Success = CBool(.ErrorCol = 0) 
    End With 
End Sub 

답변

0

이 glNumRows 당신이 게시 코드에 값을 할당되지 않은, 그래서 의미 0의 디폴트 값을 갖는다 :

내 주요 서브입니다 루프가 전혀 실행되지 않습니다.

glNumRows에 값을 지정하면 결과가 나타납니다. 업데이트 된 질문을 바탕으로

:

변수 glNumRows은 AddNumbersOnOneRow 하위의 범위에 있지 않습니다. 그냥 테스트로, (내가 그것을 테스트하지 않은, 내가 구문 권리가 생각하는) 당신의 AddNumbersOnOneRow 하위에 그 루프 전에이 줄을 넣어보십시오

glNumRows = UBound(gINTRules.GridData.DataArray, 2) 

을 다시 말하지만, 단지 반복하는 ... glNumRows가 외설 AddNUmbersOnOneRow 하위에 정의되어 있지 않습니다. 매개 변수로 추가하거나 하위에 설정하거나, 모험을 느끼는 경우 전역 변수로 설정할 수도 있습니다.

위의 코드를 테스트로 추가하지 않으려면 루프를 초기화하고 glNumRows의 값을 확인한 후 VBA에서 값이 무엇인지 알려주는 줄에 중단 점을 설정할 수도 있습니다. 내 생각에 그것은 0이라고 말할 것입니다.

+0

메인에 glNumRows를 넣었지만 여전히 루프가 실행되지 않습니다 – user2634156

+0

@ user2634156 업데이트 된 코드를 포함하도록 원래 게시물을 편집 할 수 있습니까? 비 형식화 된 주석 블록으로 머리 또는 꼬리를 만들 곰입니다. – sous2817

+0

@ user2634156 수정 사항을 기반으로 답변을 업데이트했습니다. – sous2817

관련 문제