Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have this code in workbook#1
Global wb as workbook sub dowhat() wb.activate <<<< error here ...more code end sub ============ and this code in a sheet of workbook#2 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub application.run "workbook1.xls!dowhat" End Sub The problem is that dowaht works if run from a macro in workbook#1 but not when called from workbook#2 when a cell changes. The error I get is "Object Required" which I assume is because "wb" is empty. Can someone please let me know what I am missing. thanks |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Assuming that what you want is for dowhat() to go back to workbook#2. To do
that, you need to let dowhat() know where it's being called from by using a parameter containing the calling workbook's name... Global wb as workbook sub dowhat(strWorkbook as string) <==changed set wb = strworkbook <==added wb.activate ...more code set wb = nothing <==added end sub Private Sub Worksheet_Change(ByVal Target As Range) dim strMacro2Run as string <==added If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub strMacro2Run = "workbook1.xls!dowhat(" & ActiveWorkbook.Name & ")" <==added application.run strMacro2Run <==changed End Sub HTH, -- Gary Brown If this post was helpful, please click the ''Yes'' button next to ''Was this Post Helpfull to you?''. "jotor14" wrote: I have this code in workbook#1 Global wb as workbook sub dowhat() wb.activate <<<< error here ...more code end sub ============ and this code in a sheet of workbook#2 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub application.run "workbook1.xls!dowhat" End Sub The problem is that dowaht works if run from a macro in workbook#1 but not when called from workbook#2 when a cell changes. The error I get is "Object Required" which I assume is because "wb" is empty. Can someone please let me know what I am missing. thanks |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Actually not really. I just want the code in dowhat to run. The global "wb"
is set earlier to point to workbook#1.For some reason this global is invalid when called from workbook#2. I've tried a similar test just using a global integer set by workbook#1 and displayed by a sub in workbook #1 when called by the workbook#2 worksheet function and that worked fine. Maybe there's something special about objects ?? "Gary L Brown" wrote: Assuming that what you want is for dowhat() to go back to workbook#2. To do that, you need to let dowhat() know where it's being called from by using a parameter containing the calling workbook's name... Global wb as workbook sub dowhat(strWorkbook as string) <==changed set wb = strworkbook <==added wb.activate ...more code set wb = nothing <==added end sub Private Sub Worksheet_Change(ByVal Target As Range) dim strMacro2Run as string <==added If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub strMacro2Run = "workbook1.xls!dowhat(" & ActiveWorkbook.Name & ")" <==added application.run strMacro2Run <==changed End Sub HTH, -- Gary Brown If this post was helpful, please click the ''Yes'' button next to ''Was this Post Helpfull to you?''. "jotor14" wrote: I have this code in workbook#1 Global wb as workbook sub dowhat() wb.activate <<<< error here ...more code end sub ============ and this code in a sheet of workbook#2 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub application.run "workbook1.xls!dowhat" End Sub The problem is that dowaht works if run from a macro in workbook#1 but not when called from workbook#2 when a cell changes. The error I get is "Object Required" which I assume is because "wb" is empty. Can someone please let me know what I am missing. thanks |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
My apologies. For some reason, my code is working now. I must have been
improperly testing. thanks for your help. john "jotor14" wrote: Actually not really. I just want the code in dowhat to run. The global "wb" is set earlier to point to workbook#1.For some reason this global is invalid when called from workbook#2. I've tried a similar test just using a global integer set by workbook#1 and displayed by a sub in workbook #1 when called by the workbook#2 worksheet function and that worked fine. Maybe there's something special about objects ?? "Gary L Brown" wrote: Assuming that what you want is for dowhat() to go back to workbook#2. To do that, you need to let dowhat() know where it's being called from by using a parameter containing the calling workbook's name... Global wb as workbook sub dowhat(strWorkbook as string) <==changed set wb = strworkbook <==added wb.activate ...more code set wb = nothing <==added end sub Private Sub Worksheet_Change(ByVal Target As Range) dim strMacro2Run as string <==added If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub strMacro2Run = "workbook1.xls!dowhat(" & ActiveWorkbook.Name & ")" <==added application.run strMacro2Run <==changed End Sub HTH, -- Gary Brown If this post was helpful, please click the ''Yes'' button next to ''Was this Post Helpfull to you?''. "jotor14" wrote: I have this code in workbook#1 Global wb as workbook sub dowhat() wb.activate <<<< error here ...more code end sub ============ and this code in a sheet of workbook#2 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count 1 Then Exit Sub If Intersect(Range("B1:B20"), Target) Is Nothing Then Exit Sub application.run "workbook1.xls!dowhat" End Sub The problem is that dowaht works if run from a macro in workbook#1 but not when called from workbook#2 when a cell changes. The error I get is "Object Required" which I assume is because "wb" is empty. Can someone please let me know what I am missing. thanks |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
copy worksheets to new book without linking to original book | Excel Discussion (Misc queries) | |||
to disconnect a destination book from a source book | Excel Discussion (Misc queries) | |||
Call Center Management: How to calculate 'cost per call' | Excel Discussion (Misc queries) | |||
Can you call functions between sheets in the same book in excel? | Excel Worksheet Functions | |||
Open book, check for macros, close book | Excel Programming |