View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Sjakkie Sjakkie is offline
external usenet poster
 
Posts: 23
Default Create Worksheets

Got it

c.Resize(1, 20).Offset(, -3).Copy sh.Cells(i, "a")
i = i + 1

"Sjakkie" wrote:

worked an absolute treat. Thanks.

One last question. with the code below,

If InStr(1, c.Value, "") Then
s = Trim(Left(c, Len(c) - 5))
iloc = InStr(1, s, "/", vbTextCompare)
If iloc < 0 Then
s = Trim(Left(s, iloc - 2))
End If

Set sh = Nothing
On Error Resume Next
Set sh = Sheets(s)
On Error GoTo 0

'now check to see if that sheet didn't exist
If sh Is Nothing Then
'it doesn't exist, so add it
Set sh = Sheets.Add(After:=Sheets(Sheets.Count))
sh.Name = s
Else
c.Resize(1, 15).Copy sh.Cells(i, "D")
i = i + 1

Which is from the code earlier in the script.
I have another Data dump which i have an option in row d. however with the
above code i end up with only the data ranging from D Till the 15th column
after that. Is there a was where i can tell it to also take the column A, B
and C with this.....



"Dave Peterson" wrote:

Since you're adding sheets and renaming them immediately, you could just check
to see if that worksheet name already exists. If it does, just skip it.

This portion:
Set sh = Sheets.Add(After:=Sheets(Sheets.Count))
sh.Name = s

Becomes:
set sh = nothing
on error resume next
set sh = sheets(s)
on error goto 0

'now check to see if that sheet didn't exist
if sh is nothing then
'it doesn't exist, so add it
Set sh = Sheets.Add(After:=Sheets(Sheets.Count))
sh.Name = s
end if




Sjakkie wrote:

How do i change the script below to go through the list and have the
duplicates searched aswell but only
allow the name to be used once.

so that if there is

lead 1
lead 2
lead 3
lead 4
lead 4
lead 5
lead 6
lead 4

That it just makes the Worksheets
lead 1
lead 2
lead 3
lead 4
lead 5
lead 6

Sub SplitDump()

Dim sh As Worksheet, s As String
Dim i As Long, iloc as Long
Dim c As Range
Dim strAddress As String
Dim test As Integer

strMain = ActiveSheet.Name
i = 2
For Each c In Range("a1:a60")
strAddress = c.Address
If Len(c.Value) = 0 Then
MsgBox ("Finished")
Exit Sub
End If

If InStr(1, c.Value, "Lead:") Then
s = Trim(Right(c, Len(c) - 5))
iloc = Instr(1,s,"/",vbTextcompare)
if iloc < 0 then
s = Trim(Left(s,iloc-1))
end if
Set sh = Sheets.Add(After:=Sheets(Sheets.Count))
sh.Name = s
i = 2
Else
c.Resize(1, 5).Copy sh.Cells(i, "A")
i = i + 1
End If
Next c

End Sub


--

Dave Peterson