+ Reply to Thread
Results 1 to 7 of 7

variable not transferring?

  1. #1
    davegb
    Guest

    variable not transferring?

    With a lot of help here, I've written some code to compare 2
    spreadsheets. But when I couple the code to run a userform to get the
    filenames to compare with the code to align the data in corresponding
    rows, the second macro doesn't recognize the workbook names that have
    been saved in the first macro.

    Here's the code with the userform:

    Option Explicit
    Public wsNew As Worksheet
    Public wsOrig As Worksheet
    Public wbNew As Workbook
    Public wbOrig As Workbook


    Private Sub CancelButton_Click()
    Unload UserForm2
    End Sub

    Private Sub OkButton_Click()
    'Workbooks(ComboBox1.Text).Select
    Set wbNew = Workbooks(ComboBox1.Text)
    Set wbOrig = Workbooks(ComboBox2.Text)
    'wbNew.Activate
    UserForm2.Hide
    Call EvenOutRows

    End Sub

    Private Sub UserForm_Initialize()
    Dim wbk As Workbook
    For Each wbk In Workbooks
    ComboBox1.AddItem wbk.Name
    ComboBox2.AddItem wbk.Name
    Next wbk

    End Sub

    And the other code:

    Sub EvenOutRows()

    Dim wsNew As Worksheet
    Dim wsOrig As Worksheet
    Dim lCurRow As Long
    Dim lrowNew As Long
    Dim lrowOrig As Long
    UserForm2.Show

    Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    WITHBLOCK VARIABLE NOT SET

    Set wsNew = wbNew.Worksheets("sheet1")

    lCurRow = 2
    Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    lCurRow = lCurRow + 1
    End If
    Loop
    Application.Run "Compare.xla!Compare"
    End Sub

    The variables have been declared publicly in both modules. Any
    suggestions?


  2. #2
    Tom Ogilvy
    Guest

    RE: variable not transferring?

    Option Explicit
    Public wsNew As Worksheet
    Public wsOrig As Worksheet
    Public wbNew As Workbook
    Public wbOrig As Workbook

    needs to be placed at the top of a general module.

    Public variables in a general module have project wide scope. Public
    variables in a userform have module level scope by default although they can
    also be treated as properties of the class.

    --
    Regards,
    Tom Ogilvy

    "davegb" wrote:

    > With a lot of help here, I've written some code to compare 2
    > spreadsheets. But when I couple the code to run a userform to get the
    > filenames to compare with the code to align the data in corresponding
    > rows, the second macro doesn't recognize the workbook names that have
    > been saved in the first macro.
    >
    > Here's the code with the userform:
    >
    > Option Explicit
    > Public wsNew As Worksheet
    > Public wsOrig As Worksheet
    > Public wbNew As Workbook
    > Public wbOrig As Workbook
    >
    >
    > Private Sub CancelButton_Click()
    > Unload UserForm2
    > End Sub
    >
    > Private Sub OkButton_Click()
    > 'Workbooks(ComboBox1.Text).Select
    > Set wbNew = Workbooks(ComboBox1.Text)
    > Set wbOrig = Workbooks(ComboBox2.Text)
    > 'wbNew.Activate
    > UserForm2.Hide
    > Call EvenOutRows
    >
    > End Sub
    >
    > Private Sub UserForm_Initialize()
    > Dim wbk As Workbook
    > For Each wbk In Workbooks
    > ComboBox1.AddItem wbk.Name
    > ComboBox2.AddItem wbk.Name
    > Next wbk
    >
    > End Sub
    >
    > And the other code:
    >
    > Sub EvenOutRows()
    >
    > Dim wsNew As Worksheet
    > Dim wsOrig As Worksheet
    > Dim lCurRow As Long
    > Dim lrowNew As Long
    > Dim lrowOrig As Long
    > UserForm2.Show
    >
    > Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    > WITHBLOCK VARIABLE NOT SET
    >
    > Set wsNew = wbNew.Worksheets("sheet1")
    >
    > lCurRow = 2
    > Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    > Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    > If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    > wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    > wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    > lCurRow = lCurRow + 1
    > End If
    > Loop
    > Application.Run "Compare.xla!Compare"
    > End Sub
    >
    > The variables have been declared publicly in both modules. Any
    > suggestions?
    >
    >


  3. #3
    davegb
    Guest

    Re: variable not transferring?


    Tom Ogilvy wrote:
    > Option Explicit
    > Public wsNew As Worksheet
    > Public wsOrig As Worksheet
    > Public wbNew As Workbook
    > Public wbOrig As Workbook
    >
    > needs to be placed at the top of a general module.
    >
    > Public variables in a general module have project wide scope. Public
    > variables in a userform have module level scope by default although they can
    > also be treated as properties of the class.
    >
    > --
    > Regards,
    > Tom Ogilvy


    Tom, thanks for your help.

    I had declared the variables publicly in both the userform module and
    the general module. When I read your reply, I remarked them out in the
    userform module. Now I'm getting a Subscript out of range error on that
    same code. Any suggestions?

    >
    > "davegb" wrote:
    >
    > > With a lot of help here, I've written some code to compare 2
    > > spreadsheets. But when I couple the code to run a userform to get the
    > > filenames to compare with the code to align the data in corresponding
    > > rows, the second macro doesn't recognize the workbook names that have
    > > been saved in the first macro.
    > >
    > > Here's the code with the userform:
    > >
    > > Option Explicit
    > > Public wsNew As Worksheet
    > > Public wsOrig As Worksheet
    > > Public wbNew As Workbook
    > > Public wbOrig As Workbook
    > >
    > >
    > > Private Sub CancelButton_Click()
    > > Unload UserForm2
    > > End Sub
    > >
    > > Private Sub OkButton_Click()
    > > 'Workbooks(ComboBox1.Text).Select
    > > Set wbNew = Workbooks(ComboBox1.Text)
    > > Set wbOrig = Workbooks(ComboBox2.Text)
    > > 'wbNew.Activate
    > > UserForm2.Hide
    > > Call EvenOutRows
    > >
    > > End Sub
    > >
    > > Private Sub UserForm_Initialize()
    > > Dim wbk As Workbook
    > > For Each wbk In Workbooks
    > > ComboBox1.AddItem wbk.Name
    > > ComboBox2.AddItem wbk.Name
    > > Next wbk
    > >
    > > End Sub
    > >
    > > And the other code:
    > >
    > > Sub EvenOutRows()
    > >
    > > Dim wsNew As Worksheet
    > > Dim wsOrig As Worksheet
    > > Dim lCurRow As Long
    > > Dim lrowNew As Long
    > > Dim lrowOrig As Long
    > > UserForm2.Show
    > >
    > > Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    > > WITHBLOCK VARIABLE NOT SET
    > >
    > > Set wsNew = wbNew.Worksheets("sheet1")
    > >
    > > lCurRow = 2
    > > Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    > > Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    > > If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    > > wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    > > wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    > > lCurRow = lCurRow + 1
    > > End If
    > > Loop
    > > Application.Run "Compare.xla!Compare"
    > > End Sub
    > >
    > > The variables have been declared publicly in both modules. Any
    > > suggestions?
    > >
    > >



  4. #4
    Dave Peterson
    Guest

    Re: variable not transferring?

    Are you getting the error on one of these lines?

    Set wbNew = Workbooks(ComboBox1.Text)
    Set wbOrig = Workbooks(ComboBox2.Text)

    If yes, then the current value in that combobox (that's causing the error)
    doesn't refer back to a workbook that's open.

    Could it be that the user hasn't made a choice and that .text value is still
    ""???

    davegb wrote:
    >
    > Tom Ogilvy wrote:
    > > Option Explicit
    > > Public wsNew As Worksheet
    > > Public wsOrig As Worksheet
    > > Public wbNew As Workbook
    > > Public wbOrig As Workbook
    > >
    > > needs to be placed at the top of a general module.
    > >
    > > Public variables in a general module have project wide scope. Public
    > > variables in a userform have module level scope by default although they can
    > > also be treated as properties of the class.
    > >
    > > --
    > > Regards,
    > > Tom Ogilvy

    >
    > Tom, thanks for your help.
    >
    > I had declared the variables publicly in both the userform module and
    > the general module. When I read your reply, I remarked them out in the
    > userform module. Now I'm getting a Subscript out of range error on that
    > same code. Any suggestions?
    >
    > >
    > > "davegb" wrote:
    > >
    > > > With a lot of help here, I've written some code to compare 2
    > > > spreadsheets. But when I couple the code to run a userform to get the
    > > > filenames to compare with the code to align the data in corresponding
    > > > rows, the second macro doesn't recognize the workbook names that have
    > > > been saved in the first macro.
    > > >
    > > > Here's the code with the userform:
    > > >
    > > > Option Explicit
    > > > Public wsNew As Worksheet
    > > > Public wsOrig As Worksheet
    > > > Public wbNew As Workbook
    > > > Public wbOrig As Workbook
    > > >
    > > >
    > > > Private Sub CancelButton_Click()
    > > > Unload UserForm2
    > > > End Sub
    > > >
    > > > Private Sub OkButton_Click()
    > > > 'Workbooks(ComboBox1.Text).Select
    > > > Set wbNew = Workbooks(ComboBox1.Text)
    > > > Set wbOrig = Workbooks(ComboBox2.Text)
    > > > 'wbNew.Activate
    > > > UserForm2.Hide
    > > > Call EvenOutRows
    > > >
    > > > End Sub
    > > >
    > > > Private Sub UserForm_Initialize()
    > > > Dim wbk As Workbook
    > > > For Each wbk In Workbooks
    > > > ComboBox1.AddItem wbk.Name
    > > > ComboBox2.AddItem wbk.Name
    > > > Next wbk
    > > >
    > > > End Sub
    > > >
    > > > And the other code:
    > > >
    > > > Sub EvenOutRows()
    > > >
    > > > Dim wsNew As Worksheet
    > > > Dim wsOrig As Worksheet
    > > > Dim lCurRow As Long
    > > > Dim lrowNew As Long
    > > > Dim lrowOrig As Long
    > > > UserForm2.Show
    > > >
    > > > Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    > > > WITHBLOCK VARIABLE NOT SET
    > > >
    > > > Set wsNew = wbNew.Worksheets("sheet1")
    > > >
    > > > lCurRow = 2
    > > > Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    > > > Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    > > > If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    > > > wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    > > > wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    > > > lCurRow = lCurRow + 1
    > > > End If
    > > > Loop
    > > > Application.Run "Compare.xla!Compare"
    > > > End Sub
    > > >
    > > > The variables have been declared publicly in both modules. Any
    > > > suggestions?
    > > >
    > > >


    --

    Dave Peterson

  5. #5
    davegb
    Guest

    Re: variable not transferring?


    Dave Peterson wrote:
    > Are you getting the error on one of these lines?
    >
    > Set wbNew = Workbooks(ComboBox1.Text)
    > Set wbOrig = Workbooks(ComboBox2.Text)
    >
    > If yes, then the current value in that combobox (that's causing the error)
    > doesn't refer back to a workbook that's open.
    >
    > Could it be that the user hasn't made a choice and that .text value is still
    > ""???
    >


    Thanks for your reply, Dave.

    I found the problem. The user supplying the spreadsheets to be compared
    has been renaming the first sheet instead of leaving it "Sheet1"! Doh!

    Thanks again to all.


    > davegb wrote:
    > >
    > > Tom Ogilvy wrote:
    > > > Option Explicit
    > > > Public wsNew As Worksheet
    > > > Public wsOrig As Worksheet
    > > > Public wbNew As Workbook
    > > > Public wbOrig As Workbook
    > > >
    > > > needs to be placed at the top of a general module.
    > > >
    > > > Public variables in a general module have project wide scope. Public
    > > > variables in a userform have module level scope by default although they can
    > > > also be treated as properties of the class.
    > > >
    > > > --
    > > > Regards,
    > > > Tom Ogilvy

    > >
    > > Tom, thanks for your help.
    > >
    > > I had declared the variables publicly in both the userform module and
    > > the general module. When I read your reply, I remarked them out in the
    > > userform module. Now I'm getting a Subscript out of range error on that
    > > same code. Any suggestions?
    > >
    > > >
    > > > "davegb" wrote:
    > > >
    > > > > With a lot of help here, I've written some code to compare 2
    > > > > spreadsheets. But when I couple the code to run a userform to get the
    > > > > filenames to compare with the code to align the data in corresponding
    > > > > rows, the second macro doesn't recognize the workbook names that have
    > > > > been saved in the first macro.
    > > > >
    > > > > Here's the code with the userform:
    > > > >
    > > > > Option Explicit
    > > > > Public wsNew As Worksheet
    > > > > Public wsOrig As Worksheet
    > > > > Public wbNew As Workbook
    > > > > Public wbOrig As Workbook
    > > > >
    > > > >
    > > > > Private Sub CancelButton_Click()
    > > > > Unload UserForm2
    > > > > End Sub
    > > > >
    > > > > Private Sub OkButton_Click()
    > > > > 'Workbooks(ComboBox1.Text).Select
    > > > > Set wbNew = Workbooks(ComboBox1.Text)
    > > > > Set wbOrig = Workbooks(ComboBox2.Text)
    > > > > 'wbNew.Activate
    > > > > UserForm2.Hide
    > > > > Call EvenOutRows
    > > > >
    > > > > End Sub
    > > > >
    > > > > Private Sub UserForm_Initialize()
    > > > > Dim wbk As Workbook
    > > > > For Each wbk In Workbooks
    > > > > ComboBox1.AddItem wbk.Name
    > > > > ComboBox2.AddItem wbk.Name
    > > > > Next wbk
    > > > >
    > > > > End Sub
    > > > >
    > > > > And the other code:
    > > > >
    > > > > Sub EvenOutRows()
    > > > >
    > > > > Dim wsNew As Worksheet
    > > > > Dim wsOrig As Worksheet
    > > > > Dim lCurRow As Long
    > > > > Dim lrowNew As Long
    > > > > Dim lrowOrig As Long
    > > > > UserForm2.Show
    > > > >
    > > > > Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    > > > > WITHBLOCK VARIABLE NOT SET
    > > > >
    > > > > Set wsNew = wbNew.Worksheets("sheet1")
    > > > >
    > > > > lCurRow = 2
    > > > > Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    > > > > Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    > > > > If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    > > > > wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > > ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    > > > > wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > > ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    > > > > lCurRow = lCurRow + 1
    > > > > End If
    > > > > Loop
    > > > > Application.Run "Compare.xla!Compare"
    > > > > End Sub
    > > > >
    > > > > The variables have been declared publicly in both modules. Any
    > > > > suggestions?
    > > > >
    > > > >

    >
    > --
    >
    > Dave Peterson



  6. #6
    Dave Peterson
    Guest

    Re: variable not transferring?

    Glad you found the problem.

    (I didn't notice your not in your code. Sorry.)

    davegb wrote:
    >
    > Dave Peterson wrote:
    > > Are you getting the error on one of these lines?
    > >
    > > Set wbNew = Workbooks(ComboBox1.Text)
    > > Set wbOrig = Workbooks(ComboBox2.Text)
    > >
    > > If yes, then the current value in that combobox (that's causing the error)
    > > doesn't refer back to a workbook that's open.
    > >
    > > Could it be that the user hasn't made a choice and that .text value is still
    > > ""???
    > >

    >
    > Thanks for your reply, Dave.
    >
    > I found the problem. The user supplying the spreadsheets to be compared
    > has been renaming the first sheet instead of leaving it "Sheet1"! Doh!
    >
    > Thanks again to all.
    >
    > > davegb wrote:
    > > >
    > > > Tom Ogilvy wrote:
    > > > > Option Explicit
    > > > > Public wsNew As Worksheet
    > > > > Public wsOrig As Worksheet
    > > > > Public wbNew As Workbook
    > > > > Public wbOrig As Workbook
    > > > >
    > > > > needs to be placed at the top of a general module.
    > > > >
    > > > > Public variables in a general module have project wide scope. Public
    > > > > variables in a userform have module level scope by default although they can
    > > > > also be treated as properties of the class.
    > > > >
    > > > > --
    > > > > Regards,
    > > > > Tom Ogilvy
    > > >
    > > > Tom, thanks for your help.
    > > >
    > > > I had declared the variables publicly in both the userform module and
    > > > the general module. When I read your reply, I remarked them out in the
    > > > userform module. Now I'm getting a Subscript out of range error on that
    > > > same code. Any suggestions?
    > > >
    > > > >
    > > > > "davegb" wrote:
    > > > >
    > > > > > With a lot of help here, I've written some code to compare 2
    > > > > > spreadsheets. But when I couple the code to run a userform to get the
    > > > > > filenames to compare with the code to align the data in corresponding
    > > > > > rows, the second macro doesn't recognize the workbook names that have
    > > > > > been saved in the first macro.
    > > > > >
    > > > > > Here's the code with the userform:
    > > > > >
    > > > > > Option Explicit
    > > > > > Public wsNew As Worksheet
    > > > > > Public wsOrig As Worksheet
    > > > > > Public wbNew As Workbook
    > > > > > Public wbOrig As Workbook
    > > > > >
    > > > > >
    > > > > > Private Sub CancelButton_Click()
    > > > > > Unload UserForm2
    > > > > > End Sub
    > > > > >
    > > > > > Private Sub OkButton_Click()
    > > > > > 'Workbooks(ComboBox1.Text).Select
    > > > > > Set wbNew = Workbooks(ComboBox1.Text)
    > > > > > Set wbOrig = Workbooks(ComboBox2.Text)
    > > > > > 'wbNew.Activate
    > > > > > UserForm2.Hide
    > > > > > Call EvenOutRows
    > > > > >
    > > > > > End Sub
    > > > > >
    > > > > > Private Sub UserForm_Initialize()
    > > > > > Dim wbk As Workbook
    > > > > > For Each wbk In Workbooks
    > > > > > ComboBox1.AddItem wbk.Name
    > > > > > ComboBox2.AddItem wbk.Name
    > > > > > Next wbk
    > > > > >
    > > > > > End Sub
    > > > > >
    > > > > > And the other code:
    > > > > >
    > > > > > Sub EvenOutRows()
    > > > > >
    > > > > > Dim wsNew As Worksheet
    > > > > > Dim wsOrig As Worksheet
    > > > > > Dim lCurRow As Long
    > > > > > Dim lrowNew As Long
    > > > > > Dim lrowOrig As Long
    > > > > > UserForm2.Show
    > > > > >
    > > > > > Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    > > > > > WITHBLOCK VARIABLE NOT SET
    > > > > >
    > > > > > Set wsNew = wbNew.Worksheets("sheet1")
    > > > > >
    > > > > > lCurRow = 2
    > > > > > Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    > > > > > Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    > > > > > If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    > > > > > wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > > > ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    > > > > > wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > > > ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    > > > > > lCurRow = lCurRow + 1
    > > > > > End If
    > > > > > Loop
    > > > > > Application.Run "Compare.xla!Compare"
    > > > > > End Sub
    > > > > >
    > > > > > The variables have been declared publicly in both modules. Any
    > > > > > suggestions?
    > > > > >
    > > > > >

    > >
    > > --
    > >
    > > Dave Peterson


    --

    Dave Peterson

  7. #7
    Dave Peterson
    Guest

    Re: variable not transferring?

    (I didn't notice your notE in your code. Sorry.)

    Dave Peterson wrote:
    >
    > Glad you found the problem.
    >
    > (I didn't notice your not in your code. Sorry.)
    >
    > davegb wrote:
    > >
    > > Dave Peterson wrote:
    > > > Are you getting the error on one of these lines?
    > > >
    > > > Set wbNew = Workbooks(ComboBox1.Text)
    > > > Set wbOrig = Workbooks(ComboBox2.Text)
    > > >
    > > > If yes, then the current value in that combobox (that's causing the error)
    > > > doesn't refer back to a workbook that's open.
    > > >
    > > > Could it be that the user hasn't made a choice and that .text value is still
    > > > ""???
    > > >

    > >
    > > Thanks for your reply, Dave.
    > >
    > > I found the problem. The user supplying the spreadsheets to be compared
    > > has been renaming the first sheet instead of leaving it "Sheet1"! Doh!
    > >
    > > Thanks again to all.
    > >
    > > > davegb wrote:
    > > > >
    > > > > Tom Ogilvy wrote:
    > > > > > Option Explicit
    > > > > > Public wsNew As Worksheet
    > > > > > Public wsOrig As Worksheet
    > > > > > Public wbNew As Workbook
    > > > > > Public wbOrig As Workbook
    > > > > >
    > > > > > needs to be placed at the top of a general module.
    > > > > >
    > > > > > Public variables in a general module have project wide scope. Public
    > > > > > variables in a userform have module level scope by default although they can
    > > > > > also be treated as properties of the class.
    > > > > >
    > > > > > --
    > > > > > Regards,
    > > > > > Tom Ogilvy
    > > > >
    > > > > Tom, thanks for your help.
    > > > >
    > > > > I had declared the variables publicly in both the userform module and
    > > > > the general module. When I read your reply, I remarked them out in the
    > > > > userform module. Now I'm getting a Subscript out of range error on that
    > > > > same code. Any suggestions?
    > > > >
    > > > > >
    > > > > > "davegb" wrote:
    > > > > >
    > > > > > > With a lot of help here, I've written some code to compare 2
    > > > > > > spreadsheets. But when I couple the code to run a userform to get the
    > > > > > > filenames to compare with the code to align the data in corresponding
    > > > > > > rows, the second macro doesn't recognize the workbook names that have
    > > > > > > been saved in the first macro.
    > > > > > >
    > > > > > > Here's the code with the userform:
    > > > > > >
    > > > > > > Option Explicit
    > > > > > > Public wsNew As Worksheet
    > > > > > > Public wsOrig As Worksheet
    > > > > > > Public wbNew As Workbook
    > > > > > > Public wbOrig As Workbook
    > > > > > >
    > > > > > >
    > > > > > > Private Sub CancelButton_Click()
    > > > > > > Unload UserForm2
    > > > > > > End Sub
    > > > > > >
    > > > > > > Private Sub OkButton_Click()
    > > > > > > 'Workbooks(ComboBox1.Text).Select
    > > > > > > Set wbNew = Workbooks(ComboBox1.Text)
    > > > > > > Set wbOrig = Workbooks(ComboBox2.Text)
    > > > > > > 'wbNew.Activate
    > > > > > > UserForm2.Hide
    > > > > > > Call EvenOutRows
    > > > > > >
    > > > > > > End Sub
    > > > > > >
    > > > > > > Private Sub UserForm_Initialize()
    > > > > > > Dim wbk As Workbook
    > > > > > > For Each wbk In Workbooks
    > > > > > > ComboBox1.AddItem wbk.Name
    > > > > > > ComboBox2.AddItem wbk.Name
    > > > > > > Next wbk
    > > > > > >
    > > > > > > End Sub
    > > > > > >
    > > > > > > And the other code:
    > > > > > >
    > > > > > > Sub EvenOutRows()
    > > > > > >
    > > > > > > Dim wsNew As Worksheet
    > > > > > > Dim wsOrig As Worksheet
    > > > > > > Dim lCurRow As Long
    > > > > > > Dim lrowNew As Long
    > > > > > > Dim lrowOrig As Long
    > > > > > > UserForm2.Show
    > > > > > >
    > > > > > > Set wsOrig = wbOrig.Worksheets("Sheet1") <-------OBJECT VARIABLE OR
    > > > > > > WITHBLOCK VARIABLE NOT SET
    > > > > > >
    > > > > > > Set wsNew = wbNew.Worksheets("sheet1")
    > > > > > >
    > > > > > > lCurRow = 2
    > > > > > > Do While Not IsEmpty(wsNew.Cells(lCurRow, 1)) And _
    > > > > > > Not IsEmpty(wsOrig.Cells(lCurRow, 1))
    > > > > > > If wsNew.Cells(lCurRow, 1) > wsOrig.Cells(lCurRow, 1) Then
    > > > > > > wsNew.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > > > > ElseIf wsOrig.Cells(lCurRow, 1) > wsNew.Cells(lCurRow, 1) Then
    > > > > > > wsOrig.Rows(lCurRow).Insert: lCurRow = lCurRow + 1
    > > > > > > ElseIf wsNew.Cells(lCurRow, 1) = wsOrig.Cells(lCurRow, 1) Then
    > > > > > > lCurRow = lCurRow + 1
    > > > > > > End If
    > > > > > > Loop
    > > > > > > Application.Run "Compare.xla!Compare"
    > > > > > > End Sub
    > > > > > >
    > > > > > > The variables have been declared publicly in both modules. Any
    > > > > > > suggestions?
    > > > > > >
    > > > > > >
    > > >
    > > > --
    > > >
    > > > Dave Peterson

    >
    > --
    >
    > Dave Peterson


    --

    Dave Peterson

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1