+ Reply to Thread
Results 1 to 7 of 7

variable not transferring?

Hybrid View

  1. #1
    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



  2. #2
    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

  3. #3
    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