Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
With a lot of help from folks here, I've got the following working:
Sub PrintMine() Dim HPB As HPageBreak, FoundCell As Range Dim iCtr As Long, NumPage As Long, myNames As Variant myNames = Array( _ "Name1, Name1", "Name2, Name2", "Name3, Name3") For iCtr = LBound(myNames) To UBound(myNames) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr)) NumPage = 1 For Each HPB In ActiveSheet.HPageBreaks If HPB.Location.Row FoundCell.Row Then Exit For NumPage = NumPage + 1 Next HPB Sheets(1).PrintOut From:=NumPage, To:=NumPage, preview:=True 'for testing Next iCtr End Sub Where Names are actually Lastname, Firstname of desired list from total names on the sheet. Every time that list changes, I have to edit the code and make sure I spell the new name(s) right and presumably make sure they're in alphabetical order (my assumption). Thought occured to me I could select them from a list, give that list a named range and use that, but I can't figure out how. Any efforts have resulted in Type Mismatch errors. i.e. myNames = Range("MyList").Value or ..Value2 or .Text Any help? -- David |
#2
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Which line is giving the error?
It shouldn't be this line with the code you posted: myNames = Array("Name1, Name1", "Name2, Name2", "Name3, Name3") But picking up an array from a worksheet will result in a two dimensional array--even if that second dimension is one (rows by columns, x rows by 1 column in your case). Maybe this change would make it work. myNames = Worksheets("placenamehere").Range("myList").Value For iCtr = LBound(myNames, 1) To UBound(myNames, 1) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr, 1)) David wrote: With a lot of help from folks here, I've got the following working: Sub PrintMine() Dim HPB As HPageBreak, FoundCell As Range Dim iCtr As Long, NumPage As Long, myNames As Variant myNames = Array( _ "Name1, Name1", "Name2, Name2", "Name3, Name3") For iCtr = LBound(myNames) To UBound(myNames) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr)) NumPage = 1 For Each HPB In ActiveSheet.HPageBreaks If HPB.Location.Row FoundCell.Row Then Exit For NumPage = NumPage + 1 Next HPB Sheets(1).PrintOut From:=NumPage, To:=NumPage, preview:=True 'for testing Next iCtr End Sub Where Names are actually Lastname, Firstname of desired list from total names on the sheet. Every time that list changes, I have to edit the code and make sure I spell the new name(s) right and presumably make sure they're in alphabetical order (my assumption). Thought occured to me I could select them from a list, give that list a named range and use that, but I can't figure out how. Any efforts have resulted in Type Mismatch errors. i.e. myNames = Range("MyList").Value or .Value2 or .Text Any help? -- David -- Dave Peterson |
#3
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Dave Peterson wrote
Which line is giving the error? It shouldn't be this line with the code you posted: myNames = Array("Name1, Name1", "Name2, Name2", "Name3, Name3") It bombs he For iCtr = LBound(myNames) To UBound(myNames) But picking up an array from a worksheet will result in a two dimensional array--even if that second dimension is one (rows by columns, x rows by 1 column in your case). Maybe this change would make it work. myNames = Worksheets("placenamehere").Range("myList").Value For iCtr = LBound(myNames, 1) To UBound(myNames, 1) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr, 1)) Same error, same line. I did find this syntax after further searching, and it works!!: Dim HPB As HPageBreak, FoundCell As Range Dim c As Variant, NumPage As Long For Each c In Range("myList") Set FoundCell = Range("A:A").Find(What:=c) Thanks for trying, anyway. -- David David wrote: With a lot of help from folks here, I've got the following working: Sub PrintMine() Dim HPB As HPageBreak, FoundCell As Range Dim iCtr As Long, NumPage As Long, myNames As Variant myNames = Array( _ "Name1, Name1", "Name2, Name2", "Name3, Name3") For iCtr = LBound(myNames) To UBound(myNames) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr)) NumPage = 1 For Each HPB In ActiveSheet.HPageBreaks If HPB.Location.Row FoundCell.Row Then Exit For NumPage = NumPage + 1 Next HPB Sheets(1).PrintOut From:=NumPage, To:=NumPage, preview:=True 'for testing Next iCtr End Sub Where Names are actually Lastname, Firstname of desired list from total names on the sheet. Every time that list changes, I have to edit the code and make sure I spell the new name(s) right and presumably make sure they're in alphabetical order (my assumption). Thought occured to me I could select them from a list, give that list a named range and use that, but I can't figure out how. Any efforts have resulted in Type Mismatch errors. i.e. myNames = Range("MyList").Value or .Value2 or .Text Any help? -- David |
#4
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Glad you got it working, but there was a difference in those lines.
"Same error, same line" was "no error, different line" for me. David wrote: Dave Peterson wrote Which line is giving the error? It shouldn't be this line with the code you posted: myNames = Array("Name1, Name1", "Name2, Name2", "Name3, Name3") It bombs he For iCtr = LBound(myNames) To UBound(myNames) But picking up an array from a worksheet will result in a two dimensional array--even if that second dimension is one (rows by columns, x rows by 1 column in your case). Maybe this change would make it work. myNames = Worksheets("placenamehere").Range("myList").Value For iCtr = LBound(myNames, 1) To UBound(myNames, 1) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr, 1)) Same error, same line. I did find this syntax after further searching, and it works!!: Dim HPB As HPageBreak, FoundCell As Range Dim c As Variant, NumPage As Long For Each c In Range("myList") Set FoundCell = Range("A:A").Find(What:=c) Thanks for trying, anyway. -- David David wrote: With a lot of help from folks here, I've got the following working: Sub PrintMine() Dim HPB As HPageBreak, FoundCell As Range Dim iCtr As Long, NumPage As Long, myNames As Variant myNames = Array( _ "Name1, Name1", "Name2, Name2", "Name3, Name3") For iCtr = LBound(myNames) To UBound(myNames) Set FoundCell = Range("A:A").Find(What:=myNames(iCtr)) NumPage = 1 For Each HPB In ActiveSheet.HPageBreaks If HPB.Location.Row FoundCell.Row Then Exit For NumPage = NumPage + 1 Next HPB Sheets(1).PrintOut From:=NumPage, To:=NumPage, preview:=True 'for testing Next iCtr End Sub Where Names are actually Lastname, Firstname of desired list from total names on the sheet. Every time that list changes, I have to edit the code and make sure I spell the new name(s) right and presumably make sure they're in alphabetical order (my assumption). Thought occured to me I could select them from a list, give that list a named range and use that, but I can't figure out how. Any efforts have resulted in Type Mismatch errors. i.e. myNames = Range("MyList").Value or .Value2 or .Text Any help? -- David -- Dave Peterson |
#5
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Dave Peterson wrote
Glad you got it working, but there was a difference in those lines. "Same error, same line" was "no error, different line" for me. Maybe just a lack of clarity on my part. Substituted your code for my original and got Type Mismatch error at new line: For iCtr = LBound(myNames, 1) To UBound(myNames, 1) instead of at my original line: For iCtr = LBound(myNames) To UBound(myNames) Not sure if this is pertinent, but each name in "A:A" is separated by several rows. Just trying to understand. -- David |
#6
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
It still worked ok for me.
David wrote: Dave Peterson wrote Glad you got it working, but there was a difference in those lines. "Same error, same line" was "no error, different line" for me. Maybe just a lack of clarity on my part. Substituted your code for my original and got Type Mismatch error at new line: For iCtr = LBound(myNames, 1) To UBound(myNames, 1) instead of at my original line: For iCtr = LBound(myNames) To UBound(myNames) Not sure if this is pertinent, but each name in "A:A" is separated by several rows. Just trying to understand. -- David -- Dave Peterson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Conditional formatting if value in cell is found in a named range | Excel Worksheet Functions | |||
copy named range to powerpoint | Excel Worksheet Functions | |||
Using a formula to create named range reference | Excel Worksheet Functions | |||
named range, data validation: list non-selected items, and new added items | Excel Discussion (Misc queries) | |||
How to dynamically reference a dynamic named range | Excel Worksheet Functions |