Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Junior Member
 
Posts: 3
Default VBA to clear multiple ranges from list of sheets

Let me explain.
How do i get a macro/vba to look at a list of sheets in one worksheet and depending on the data to the right of the name clear the correct range(s).
for example list would look like
staff M5, D14:E14
manager D9:E39, G44:I49
director B44:E49

so using the above i'd need to look at the name, i.e staff and it would clear M5, followed by the range D14:E14 then would look and the next name which would be manager and clear D9:e39 followed by G44:I49. it would then look at the next name in the list which using the above would be director.

The sheets are hidden and have merged cells within the range to be cleared.

is this even possible?
any help/pointers would be greatly appreciated.

also posted on
http://www.excelguru.ca/forums/showt...list-of-sheets
http://www.mrexcel.com/forum/excel-q...st-sheets.html
http://www.excelforum.com/excel-prog...html?p=2998352

Last edited by y0rk1e72 : November 7th 12 at 02:25 PM Reason: cross post
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 587
Default VBA to clear multiple ranges from list of sheets

hi,

i hope that this example will be useful,

Sub test()
Dim oSh As Worksheet, Rng As Ranges, i As Integer
Dim sSh()

sSh = Array("staff", "manager", "director")

For Each oSh In Worksheets
For i = LBound(sSh) To UBound(sSh)
str1 = Len(Application.Substitute(oSh.Name, sSh(i), ""))
str2 = Len(oSh.Name)
If str1 < str2 Then
'MsgBox oSh.Name & " contains the word <" & sSh(i) & "" 'test
Select Case i
Case 0: Set Rng = Union(Range("M5"), Range("D14:E14"))
'staff sheet
Case 1: Set Rng = Union(Range("D9:E39"), Range("G44:I49"))
'manager sheet
Case 2: Set Rng = Range("B44:E49")
'director sheet
End Select
oSh.Range(Rng.Address).ClearContents
End If
Next i
Next
Set Rrg = Nothing
End Sub

--
isabelle


Le 2012-11-07 09:04, y0rk1e72 a écrit :
Let me explain.
How do i get a macro/vba to look at a list of sheets in one worksheet
and depending on the data to the right of the name clear the correct
range(s).
for example list would look like
staff M5, D14:E14
manager D9:E39, G44:I49
director B44:E49

so using the above i'd need to look at the name, i.e staff and it would
clear M5, followed by the range D14:E14 then would look and the next
name which would be manager and clear D9:e39 followed by G44:I49. it
would then look at the next name in the list which using the above would
be director.

The sheets are hidden and have merged cells within the range to be
cleared.

is this even possible?
any help/pointers would be greatly appreciated.

also posted on
http://tinyurl.com/a7aoz8w
http://tinyurl.com/aofkj9c
http://tinyurl.com/cbks2kg





  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 587
Default VBA to clear multiple ranges from list of sheets

this code will be more efficient if the number of sheets and cells is big

Sub test()
Dim oSh As Worksheet, Rng As Range, i As Integer, str1 As String, str2
As String
Dim sSh()
sSh = Array("staff", "manager", "director")

For Each oSh In Worksheets
str1 = Len(oSh.Name)
For i = LBound(sSh) To UBound(sSh)
str2 = Len(Application.Substitute(oSh.Name, sSh(i), ""))
If str1 < str2 Then
' MsgBox oSh.Name & " contains the word <" & sSh(i) & "" 'test
Select Case i
Case 0: Set Rng = Union(Range("M5"), Range("D14:E14"))
'staff sheet
Case 1: Set Rng = Union(Range("D9:E39"), Range("G44:I49"))
'manager sheet
Case 2: Set Rng = Range("B44:E49")
'director sheet
End Select
oSh.Range(Rng.Address).ClearContents
Set Rrg = Nothing
End If
Next i
Next
End Sub

--
isabelle

  #4   Report Post  
Junior Member
 
Posts: 3
Default

Quote:
Originally Posted by isabelle View Post
this code will be more efficient if the number of sheets and cells is big

Sub test()
Dim oSh As Worksheet, Rng As Range, i As Integer, str1 As String, str2
As String
Dim sSh()
sSh = Array("staff", "manager", "director")

For Each oSh In Worksheets
str1 = Len(oSh.Name)
For i = LBound(sSh) To UBound(sSh)
str2 = Len(Application.Substitute(oSh.Name, sSh(i), ""))
If str1 < str2 Then
' MsgBox oSh.Name & " contains the word <" & sSh(i) & "" 'test
Select Case i
Case 0: Set Rng = Union(Range("M5"), Range("D14:E14"))
'staff sheet
Case 1: Set Rng = Union(Range("D9:E39"), Range("G44:I49"))
'manager sheet
Case 2: Set Rng = Range("B44:E49")
'director sheet
End Select
oSh.Range(Rng.Address).ClearContents
Set Rrg = Nothing
End If
Next i
Next
End Sub

--
isabelle
isabelle
thanks for that however i've been told today that the list of sheets may change AND be added to.
I was trying to have a sheet with a list of the sheets in to file, that i could flag as to clear. My problem is the sheet names can change as new staff come and go so the sheet names are not fixed.
Due to confidentially i can't upload a file. However i'm looking at taking those bits out so i can post an example.
hopefully it will be done late tomorrow.
  #5   Report Post  
Junior Member
 
Posts: 3
Default

Quote:
Originally Posted by y0rk1e72 View Post
isabelle
thanks for that however i've been told today that the list of sheets may change AND be added to.
I was trying to have a sheet with a list of the sheets in to file, that i could flag as to clear. My problem is the sheet names can change as new staff come and go so the sheet names are not fixed.
Due to confidentially i can't upload a file. However i'm looking at taking those bits out so i can post an example.
hopefully it will be done late tomorrow.
kinda fixed it by using the following

Formula:
Private Sub Worksheet_Activate()
Dim c As Rangemsg As Stringstyle As Stringtitle As String
msg 
"Do you want to clear your entries?" vbCrLf "click No to cancel"
style vbYesNo vbQuestion vbDefaultButton2
title 
"Action required"
response MsgBox(msgstyletitle)
If 
response vbNo Then Exit Sub
Me
.Protect "test", , , , True 'change test to your password
On Error Resume Next
Range("D9:E39").Value = ""
Range("G9:i39").Value = ""
Range("B44:B49").Value = ""
Range("D44:E49").Value = ""
Range("g44:I49").Value = ""
MsgBox ("Your entries have been cleared.")
End Sub 
Not pretty but will do the job for now.
thanx everyone
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Protect but Allow Edit Ranges in Multiple Sheets EugeniaP Excel Discussion (Misc queries) 6 September 25th 08 05:32 PM
Clear Contents of multiple continuous ranges Mlawrence Excel Programming 2 February 28th 08 09:16 PM
Copy paste ranges from multiple sheets Woody1313 Excel Programming 2 January 30th 06 03:37 PM
Print macro for multiple ranges/sheets William[_2_] Excel Programming 0 June 1st 04 11:29 PM
Print macro for multiple ranges/sheets Ron de Bruin Excel Programming 1 June 1st 04 10:56 PM


All times are GMT +1. The time now is 07:51 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"