Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Hi all, Is there a way of selecting all w/s using VBA that have the same last name typed in an input box? lets say the w/s is called "Bob Goes Here" and another "Bob in here" and another "Bob over Here" etc is it possible to type in an input box "Here" and have it select all sheets with the last name "Here" and move them to a new workbook Named by the name in the input box so in this case "Here.xls"? Hope you can Help, Regards,Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Try the following code:
Option Explicit Sub AAA() Dim S As String Dim WS As Worksheet Dim WSArr() As String Dim Ndx As Long S = InputBox("Enter Text") If S = "" Then Exit Sub End If For Each WS In ThisWorkbook.Worksheets If Right(WS.Name, Len(S)) = S Then Ndx = Ndx + 1 ReDim Preserve WSArr(1 To Ndx) WSArr(Ndx) = WS.Name End If Next WS Worksheets(WSArr).Copy ActiveWorkbook.SaveAs S & ".xls" End Sub -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Simon Lloyd" wrote in message ... Hi all, Is there a way of selecting all w/s using VBA that have the same last name typed in an input box? lets say the w/s is called "Bob Goes Here" and another "Bob in here" and another "Bob over Here" etc is it possible to type in an input box "Here" and have it select all sheets with the last name "Here" and move them to a new workbook Named by the name in the input box so in this case "Here.xls"? Hope you can Help, Regards,Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Yep.
Something like this might get you started: Option Explicit Sub testme01() Dim wks As Worksheet Dim wCtr As Long Dim myStr As String Dim myNames() As String myStr = InputBox(Prompt:="enter the suffix") If Trim(myStr) = "" Then Exit Sub 'user hit cancel End If ReDim myNames(1 To Worksheets.Count) wCtr = 0 For Each wks In Worksheets If LCase(wks.Name) Like "*" & LCase(myStr) Then wCtr = wCtr + 1 myNames(wCtr) = wks.Name End If Next wks If wCtr = 0 Then MsgBox "No sheets matched!" Else 'remove any unused elements ReDim Preserve myNames(1 To wCtr) Worksheets(myNames).Copy With ActiveWorkbook .SaveAs Filename:=myStr & ".xls", FileFormat:=xlWorkbookNormal .Close savechanges:=False End With End If End Sub If you wanted that suffix to be separated with a space, you may want: If LCase(wks.Name) Like "* " & LCase(myStr) Then instead of: If LCase(wks.Name) Like "*" & LCase(myStr) Then Simon Lloyd wrote: Hi all, Is there a way of selecting all w/s using VBA that have the same last name typed in an input box? lets say the w/s is called "Bob Goes Here" and another "Bob in here" and another "Bob over Here" etc is it possible to type in an input box "Here" and have it select all sheets with the last name "Here" and move them to a new workbook Named by the name in the input box so in this case "Here.xls"? Hope you can Help, Regards,Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 -- Dave Peterson |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Thanks for the reply both!, they both worked well.....for my application Dave's code with "No Match Found" served a purpose, only one thing missing is when the sheets are moved i need the originals to be deleted! Oh and being greedy........is it possible to supress the code break if the filename already exists? Once again thank you both... Regards, Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Dave's solution is preferable to mine since he uses ReDim
Preserve only once. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Dave Peterson" wrote in message ... Yep. Something like this might get you started: Option Explicit Sub testme01() Dim wks As Worksheet Dim wCtr As Long Dim myStr As String Dim myNames() As String myStr = InputBox(Prompt:="enter the suffix") If Trim(myStr) = "" Then Exit Sub 'user hit cancel End If ReDim myNames(1 To Worksheets.Count) wCtr = 0 For Each wks In Worksheets If LCase(wks.Name) Like "*" & LCase(myStr) Then wCtr = wCtr + 1 myNames(wCtr) = wks.Name End If Next wks If wCtr = 0 Then MsgBox "No sheets matched!" Else 'remove any unused elements ReDim Preserve myNames(1 To wCtr) Worksheets(myNames).Copy With ActiveWorkbook .SaveAs Filename:=myStr & ".xls", FileFormat:=xlWorkbookNormal .Close savechanges:=False End With End If End Sub If you wanted that suffix to be separated with a space, you may want: If LCase(wks.Name) Like "* " & LCase(myStr) Then instead of: If LCase(wks.Name) Like "*" & LCase(myStr) Then Simon Lloyd wrote: Hi all, Is there a way of selecting all w/s using VBA that have the same last name typed in an input box? lets say the w/s is called "Bob Goes Here" and another "Bob in here" and another "Bob over Here" etc is it possible to type in an input box "Here" and have it select all sheets with the last name "Here" and move them to a new workbook Named by the name in the input box so in this case "Here.xls"? Hope you can Help, Regards,Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 -- Dave Peterson |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Instead of using .copy, you can use .move. Remember that there has to be at
least one visible sheet in the "sending" workbook. Option Explicit Sub testme01() Dim wks As Worksheet Dim wCtr As Long Dim myStr As String Dim myNames() As String myStr = InputBox(Prompt:="enter the suffix") If Trim(myStr) = "" Then Exit Sub 'user hit cancel End If ReDim myNames(1 To Worksheets.Count) wCtr = 0 For Each wks In Worksheets If LCase(wks.Name) Like "*" & LCase(myStr) Then wCtr = wCtr + 1 myNames(wCtr) = wks.Name End If Next wks If wCtr = 0 Then MsgBox "No sheets matched!" Else 'remove any unused elements ReDim Preserve myNames(1 To wCtr) Worksheets(myNames).Move With ActiveWorkbook Application.DisplayAlerts = False .SaveAs Filename:=myStr & ".xls", FileFormat:=xlWorkbookNormal Application.DisplayAlerts = True .Close savechanges:=False End With End If End Sub Simon Lloyd wrote: Thanks for the reply both!, they both worked well.....for my application Dave's code with "No Match Found" served a purpose, only one thing missing is when the sheets are moved i need the originals to be deleted! Oh and being greedy........is it possible to supress the code break if the filename already exists? Once again thank you both... Regards, Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 -- Dave Peterson |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Thankyou both again for replying........i can do basic vba tasks but don't have the knowledge for the indepth stuff although given worked examples i can usually work things out, that said i have no idea what ReDim or Preserve do, i understand, i think that ReDim means Re-Declare-In-Memory i didnt realise you had to do this i thought once you created a Dim it was always there as it usually throws up an error if you have declared something twice! Anyway enough ramblings..................Thanks alot! Regards, Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I've stolen, er, learned from lots--that, I think, came from Myrna Larson.
Chip Pearson wrote: Dave's solution is preferable to mine since he uses ReDim Preserve only once. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Dave Peterson" wrote in message ... Yep. Something like this might get you started: Option Explicit Sub testme01() Dim wks As Worksheet Dim wCtr As Long Dim myStr As String Dim myNames() As String myStr = InputBox(Prompt:="enter the suffix") If Trim(myStr) = "" Then Exit Sub 'user hit cancel End If ReDim myNames(1 To Worksheets.Count) wCtr = 0 For Each wks In Worksheets If LCase(wks.Name) Like "*" & LCase(myStr) Then wCtr = wCtr + 1 myNames(wCtr) = wks.Name End If Next wks If wCtr = 0 Then MsgBox "No sheets matched!" Else 'remove any unused elements ReDim Preserve myNames(1 To wCtr) Worksheets(myNames).Copy With ActiveWorkbook .SaveAs Filename:=myStr & ".xls", FileFormat:=xlWorkbookNormal .Close savechanges:=False End With End If End Sub If you wanted that suffix to be separated with a space, you may want: If LCase(wks.Name) Like "* " & LCase(myStr) Then instead of: If LCase(wks.Name) Like "*" & LCase(myStr) Then Simon Lloyd wrote: Hi all, Is there a way of selecting all w/s using VBA that have the same last name typed in an input box? lets say the w/s is called "Bob Goes Here" and another "Bob in here" and another "Bob over Here" etc is it possible to type in an input box "Here" and have it select all sheets with the last name "Here" and move them to a new workbook Named by the name in the input box so in this case "Here.xls"? Hope you can Help, Regards,Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 -- Dave Peterson -- Dave Peterson |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
ReDim changes the size (number of elements) in an array. It can
be used only with "dynamic" arrays, those that do not have any limits set in the declaration. E.g., Dim DynArray() As Long ' can redim Dim NonDynArray(1 To 10) ' cannot redim Normally, ReDimming an array causes all existing data to be lost and the elements of the array take on their default values (0s,empty strings, or Nothings). Using the Preserve keyword causes existing data to be preserved (but is a more expensive operation). -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Simon Lloyd" wrote in message ... Thankyou both again for replying........i can do basic vba tasks but don't have the knowledge for the indepth stuff although given worked examples i can usually work things out, that said i have no idea what ReDim or Preserve do, i understand, i think that ReDim means Re-Declare-In-Memory i didnt realise you had to do this i thought once you created a Dim it was always there as it usually throws up an error if you have declared something twice! Anyway enough ramblings..................Thanks alot! Regards, Simon -- Simon Lloyd ------------------------------------------------------------------------ Simon Lloyd's Profile: http://www.excelforum.com/member.php...fo&userid=6708 View this thread: http://www.excelforum.com/showthread...hreadid=547267 |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Chip, Thanks for the info.....i will look at the way it was used and th why's and wherefore's Dave..............Thanks for the honesty! nice to see plagarism isn dead....haha Cheers! Simo -- Simon Lloy ----------------------------------------------------------------------- Simon Lloyd's Profile: http://www.excelforum.com/member.php...nfo&userid=670 View this thread: http://www.excelforum.com/showthread.php?threadid=54726 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Grouping on protected worksheets | Excel Worksheet Functions | |||
Grouping and moving worksheets by name using VBA? | Excel Programming | |||
Problem saving the file after moving worksheets into another | Excel Discussion (Misc queries) | |||
grouping hidden worksheets | Excel Discussion (Misc queries) | |||
Data Grouping when Worksheets Protected | Excel Programming |