2016-07-26 2 views
0

저는 VBA를 처음 사용합니다. 사용자가 다른 사용자 형식의 2 차원 배열에서 입력을 변경할 수있는 옵션을 제공하는 프로그램을 작성했습니다.VBA Excel 2013 : 다른 사용자 정의 폼에서 배열 값 할당

첫 번째 사용자 양식 인 UserForm1은 사용자가 텍스트 필드의 정보를 입력하고 Save 명령 단추를 누를 때 해당 배열 행 i에 저장합니다.

사용자가 확인 명령 단추를 누르면 다른 데이터 집합을 추가할지 묻는 메시지가 나타납니다. 그들이 아니오라고 말하면 데이터를 변경할지 묻는 메시지가 나타납니다. 그들이 yes라고 말하면 다른 사용자 양식 인 UserForm2가 열립니다.

UserForm1을위한 코드는 아래의 코드와 유사하다 :

는 UserForm2에서
Public MyArray as Variant, i as Integer 

    Sub Userform_Initialize() 
     ReDim MyArray(100,4) 
    End Sub 

    Sub SaveButton_click() 
     MyArray(i, 1) = TextField1.Value 
     MyArray(i, 2) = TextField2.Value 
     MyArray(i, 3) = TextField3.Value 
     MyArray(i, 4) = TextField4.Value 
    End Sub 

    Sub OKButton_click() 
     If msgbox("Do you want to add more data?", vbYesNo) = vbNo Then 
      If msgbox("Do you have corrections to be made?",vbYesNo) = vbYes Then 
       Load UserForm2 
       UserForm2.Show 
      Else: Exit Sub 
      End If 
     Else: i = i + 1 
      Exit Sub 
     End If 
    End Sub 

, 사용자는 콤보 박스에서 난을 행 번호를 선택한다. 행 번호를 선택하면 배열 정보가 UserForm1의 텍스트 필드에 자동으로 채워집니다.

사용자가 저장 명령 단추를 누르면 텍스트 필드의 정보를 전달하여 해당 행에 기록해야합니다.

는 UserForm2에 대한 코드는 아래의 코드와 유사하다 : 코드를 통해 스테핑

Public j as integer 

    Sub Userform_Initialize() 
     For j = 1 to UserForm1.i 
      ComboBox1.AddItem (j) 
     Next 
    End Sub 

    Sub SaveButton_click() 
     UserForm1.MyArray(ComboBox1.Value, 1) = TextField1.Value 
     UserForm1.MyArray(ComboBox1.Value, 2) = TextField2.Value 
     UserForm1.MyArray(ComboBox1.Value, 3) = TextField3.Value 
     UserForm1.MyArray(ComboBox1.Value, 4) = TextField4.Value 
    End Sub 

, 경우 MyArray의 값이 제대로 참조해야한다, 나는 처음에 UserForm1을에서 저장 값을 볼 수 있습니다. 그러나 다음 줄로 가면서 값이 변하지 않습니다.

누구에게도 내 문제에 대한 해결책이 있습니까? 당신의 도움에 미리 감사드립니다!

답변

0

나는 내 해결책을 찾았다 고 생각합니다. 공공 변수로 프로그램을 시작하는 코드가 들어있는 모듈에서 배열을 선언해야했습니다. 코드를 수정하고 값을 배열에 올바르게 기록했습니다.

다른 솔루션이 있다면 누구나 알고 싶습니다. VBA에 익숙하지 않아서 다른 솔루션을 듣고 싶습니다.

관련 문제