Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

Hello Experts,
How do you replace each "Total" with the text that is located
immediately below one line below an empty space? And how do you add a
Message Box notification to either accept or override for each Replace
action?

[space]
Payroll
Contract Labour
Employee Benefits
[space]
Total
[space]
Utilities
Utilities - Electric
Utilities - Gas
[space]
Total

The result:
Msgbox "Total" will be replaced by "Payroll". Option to "OK" to accept,
"Cancel" to not do any replacing, "Override" to manually enter a new
text.

"Total" would become "Payroll"
"Total" would become "Utilities"


I've tried using the Replace function but I needed only code would work
as each Replace is different.

Thanks in advance,
Ricky

*** Sent via Developersdex http://www.developersdex.com ***
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default Msg Box on each Loop to Replace text

are only the header words and total in Column A - the other data in column B?

This assumes such is the case. Test on a copy of your workbook

Sub ReplaceTotal()
Dim s as String, cell as Range, rng as Range
set rng = range(cells(1,1),cells(rows.count,1).end(xlup))
for each cell in rng
if instr(1,cell,"total",vbTextcompare) then
cell.Value = s
else
s = cell.value
end if
next
end sub

If that isn't the case, how can we determine the header words - indented by
two spaces? No spaces? what?

--
Regards,
Tom Ogilvy



"Ricky Pang" wrote:

Hello Experts,
How do you replace each "Total" with the text that is located
immediately below one line below an empty space? And how do you add a
Message Box notification to either accept or override for each Replace
action?

[space]
Payroll
Contract Labour
Employee Benefits
[space]
Total
[space]
Utilities
Utilities - Electric
Utilities - Gas
[space]
Total

The result:
Msgbox "Total" will be replaced by "Payroll". Option to "OK" to accept,
"Cancel" to not do any replacing, "Override" to manually enter a new
text.

"Total" would become "Payroll"
"Total" would become "Utilities"


I've tried using the Replace function but I needed only code would work
as each Replace is different.

Thanks in advance,
Ricky

*** Sent via Developersdex http://www.developersdex.com ***

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

Hi Tom,
Good to hear from you. The header words are also located in column A
and the data are in columns B and beyond. The header word is identified
by jumping up 2 empty spaces from "Total" and picking the first word
below. For example;

[space] --- 1st empty cell
Payroll ----- This is the replacement header word.
Contract Labour
Employee Benefits
[space] --- 2nd empty cell
Total ---- This is the original word and should be replaced with
Payroll.

When I've ran your code, the Total has been replaced with the contents
located within 2nd empty cell. How do you get Total to be replaced with
Payroll?

Thanks so much for your help.

Ricky

*** Sent via Developersdex http://www.developersdex.com ***
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

Tom,
Just to clarify, the header and all titles (subtitles) are all within
column A. The data figures are in column B and beyond.

Thanks,
Ricky



*** Sent via Developersdex http://www.developersdex.com ***
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Msg Box on each Loop to Replace text

Sub ReplaceTotal()
Dim s as String, cell as Range, rng as Range
Dim i as Long
set rng = range(cells(1,1),cells(rows.count,1).end(xlup))
for each cell in rng
if instr(1,cell,"total",vbTextcompare) then
i = cell.row - 2
do until len(Trim(cells(i,1))) = 0
i = i - 1
loop
cell.Value = cells(i +1,1).Value
end if
next
end sub

--
Regards,
Tom Ogilvy


"Ricky Pang" wrote in message
...
Tom,
Just to clarify, the header and all titles (subtitles) are all within
column A. The data figures are in column B and beyond.

Thanks,
Ricky



*** Sent via Developersdex http://www.developersdex.com ***





  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

That's amazing Tom. It works and it's just what I am looking for.
Thanks very much.

Is it possible to add a message popup box to indicate the what the
replacement word will be as the cursor jumps through each "Total" so I
could see how far along the page the code has progressed?

Popup Msgbox box with each "Total" found:
"Total" will be replaced by "Payroll".
Option "OK" to accept; or
Option "Cancel" to do no replacements at all; or
Option "Override" to enter a new word.

This would be useful when this spreadsheet is passed on to someone new
in the future.

Much much appreciated.

Ricky

*** Sent via Developersdex http://www.developersdex.com ***
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Msg Box on each Loop to Replace text

Choices on a msgbox are limited. So the choices will be Yes, No, Cancel.

Sub ReplaceTotal()
Dim s As String, cell As Range, rng As Range
Dim i As Long, ans As Long, s1 As String
Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
For Each cell In rng
If InStr(1, cell, "total", vbTextCompare) Then
i = cell.Row - 2
Do Until Len(Trim(Cells(i, 1))) = 0
i = i - 1
Loop
cell.Select
s = "Total will be replaced by " & Cells(i + 1, 1).Value & vbNewLine _
& vbNewLine _
& "Yes: Continue" & vbNewLine _
& "No: Do Not Replace" & vbNewLine _
& "Cancel: Use a word I will provide"

ans = MsgBox(s, vbYesNoCancel, "Make a Choice")
Select Case ans
Case vbYes
cell.Value = Cells(i + 1, 1).Value
Case vbCancel
s1 = InputBox("Provide Word to Use?", _
"Enter Replacement", Cells(i + 1, 1).Value)
If Len(Trim(s1)) 0 Then
cell.Value = s1
End If
End Select
End If
Next
End Sub

--
Regards,
Tom Ogilvy


"Ricky Pang" wrote in message
...
That's amazing Tom. It works and it's just what I am looking for.
Thanks very much.

Is it possible to add a message popup box to indicate the what the
replacement word will be as the cursor jumps through each "Total" so I
could see how far along the page the code has progressed?

Popup Msgbox box with each "Total" found:
"Total" will be replaced by "Payroll".
Option "OK" to accept; or
Option "Cancel" to do no replacements at all; or
Option "Override" to enter a new word.

This would be useful when this spreadsheet is passed on to someone new
in the future.

Much much appreciated.

Ricky

*** Sent via Developersdex http://www.developersdex.com ***



  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

Tom, this code is incredible. The popup message box really helps me
know what titles are about to be changed. The override option is great.

1) This is for self improvement about VB. When I ran your code, it
searches for all titles with the word "Total" within column A. In
comparison, how would the line be different if I needed to match and
replace a non-case-sensitive "Total" only so it would bypass other
titles with additional words such as Total Operating Expenses?

2) Having finished replacing all titles named "Total", how do you
replace a range between 2 empty spaces based on another Title search
such as "Total Operating Expenses"?
[space] --- this is the 1st space, range starts here.
Non-Operating Legal
Non-Operating Repairs
Non-Operating Leasing
[space] --- this is the 2nd space, range ends here.
Total Operating Expenses --- First, search for this title.

search for "Total Operating Expenses".
jump up to the 2nd empty space, mark it as Range ends.
jump up to the 1st empty space, mark it as Range starts.
then change everything within the range to become "Operating Expense".
keep maintaining the useful popup msgbox.

3) For more title replacements in the future, is there a place in code
that I could type in a search word such as "Collection Loss" and replace
with "Bad Debt" (while mainting the useful popup msgbox)?

Your help is greatly appreciated.

Thanks again,
Ricky




*** Sent via Developersdex http://www.developersdex.com ***
  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Msg Box on each Loop to Replace text

Change
If InStr(1, cell, "total", vbTextCompare) Then
to

If lCase(cell.Value) = "total" then


Sub ReplaceOtherStrings()
Dim s As String, cell As Range, rng As Range
Dim i As Long, ans As Long, s1 As String
Dim ans1 as String, ans2 as String
Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
ans1 = InputBox("Enter Search Term")
if len(trim(ans1)) = 0 then exit sub
ans1 = lcase(ans)
if instr(1,ans1,"total",vbTextCompare) = 1 then
ans2 = Trim(Mid(ans1,7,255))
if lcase(right(ans2,1)) = "s" then
ans2 = Left(ans2,Len(ans2)-1)
end if
Else
ans2 = Ans1
End if
For Each cell In rng
If Trim(cell) = ans1 Then
i = cell.Row - 2
Do Until Len(Trim(Cells(i, 1))) = 0
i = i - 1
Loop
cell.Select
s = "Total will be replaced by " & _
ans1 & vbNewLine _
& vbNewLine _
& "Yes: Continue" & vbNewLine _
& "No: Do Not Replace" & vbNewLine _
& "Cancel: Use a word I will provide"

ans = MsgBox(s, vbYesNoCancel, "Make a Choice")
Select Case ans
Case vbYes
Range(Cells(i + 1, 1),Cell.offset(-2,0)).Value = ans1
Case vbCancel
s1 = InputBox("Provide Word to Use?", _
"Enter Replacement", ans1)
If Len(Trim(s1)) 0 Then
Range(Cells(i + 1, 1),Cell.offset(-2,0)).Value = s1
End If
End Select
End If
Next
End Sub


Sub ReplaceSpecifiedWordWithSpecifiedWord()
Dim s As String, cell As Range, rng As Range
Dim i As Long, ans As Long, s1 As String
Dim ans1 as Long, ans2 as Long
ans1 = InputBox("Enter Search term")
ans2 = InputBox("Enter Replacement term"
Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
For Each cell In rng
If lcase(cell.value) = lcase(ans1) Then
cell.Select
s = ans1 & " will be replaced by " & ans2 & vbNewLine _
& vbNewLine _
& "Yes: Continue" & vbNewLine _
& "No: Do Not Replace" & vbNewLine _
& "Cancel: Use a word I will provide"

ans = MsgBox(s, vbYesNoCancel, "Make a Choice")
Select Case ans
Case vbYes
cell.Value = ans2
Case vbCancel
s1 = InputBox("Provide Word to Use?", _
"Enter Replacement", Cells(i + 1, 1).Value)
If Len(Trim(s1)) 0 Then
cell.Value = s1
End If
End Select
End If
Next
End Sub


code is untested, so you may need to do a little debugging.
--
Regards,
Tom Ogilvy


"Ricky Pang" wrote in message
...
Tom, this code is incredible. The popup message box really helps me
know what titles are about to be changed. The override option is great.

1) This is for self improvement about VB. When I ran your code, it
searches for all titles with the word "Total" within column A. In
comparison, how would the line be different if I needed to match and
replace a non-case-sensitive "Total" only so it would bypass other
titles with additional words such as Total Operating Expenses?

2) Having finished replacing all titles named "Total", how do you
replace a range between 2 empty spaces based on another Title search
such as "Total Operating Expenses"?
[space] --- this is the 1st space, range starts here.
Non-Operating Legal
Non-Operating Repairs
Non-Operating Leasing
[space] --- this is the 2nd space, range ends here.
Total Operating Expenses --- First, search for this title.

search for "Total Operating Expenses".
jump up to the 2nd empty space, mark it as Range ends.
jump up to the 1st empty space, mark it as Range starts.
then change everything within the range to become "Operating Expense".
keep maintaining the useful popup msgbox.

3) For more title replacements in the future, is there a place in code
that I could type in a search word such as "Collection Loss" and replace
with "Bad Debt" (while mainting the useful popup msgbox)?

Your help is greatly appreciated.

Thanks again,
Ricky




*** Sent via Developersdex http://www.developersdex.com ***



  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

Hi Tom,
As the titles are in Proper-case (not in lower-case), I took out the
lCase to make the line just {If (cell.Value) = "Total" Then} for an
exact match. How would you alter this so that it is not case-sensitive
and entering "total" would still be valid?

Really need your help with the other 2 codes:
Sub ReplaceOtherStrings()
I've tried matching the lower-case/upper-case exact word but it takes no
action. I'm unsure of the end result with what Trim ans2 does as I
don't need it to be case-sensitive and also what;
{If InStr(1, ans1, "Total", vbTextCompare) = 1 Then} does
because "Total" would have been completely replaced through the Sub
ReplaceTotal() code already.

I need to make replacements of titles that is listed between 2 empty
cells. The search is based on locating "Total Operating Expenses"
first. Directly above "Total Operating Expenses" is an empty cell. The
list of titles to be replaced would then be located directly above it.
The word to replace is based on an input box of InputBox("Enter
Replacement Term").

I think that's what the ReplaceOtherStrings() was meant to do but I
really need your help.

Sub ReplaceSpecifiedWordWithSpecifiedWord()
errors at the first line; ans1 = InputBox("Enter Search term") is
highlighted. We could come back to this later.


So far this following code works very nicely. The Sub
ReplaceOtherStrings() would then be an extension of this code.

Sub ReplaceTotal()
Dim s As String, cell As Range, rng As Range
Dim i As Long, ans As Long, s1 As String
Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
For Each cell In rng
If (cell.Value) = "Total" Then
i = cell.Row - 2
Do Until Len(Trim(Cells(i, 1))) = 0
i = i - 1
Loop
cell.Select
s = "[Total] will be replaced by " & Cells(i + 1, 1).Value &
vbNewLine _
& vbNewLine _
& "Yes: Continue" & vbNewLine _
& "No: Do Not Replace" & vbNewLine _
& "Cancel: Override to Input Alternate Title"

ans = MsgBox(s, vbYesNoCancel, "Select an Option")
Select Case ans
Case vbYes
cell.Value = Cells(i + 1, 1).Value
Case vbCancel
s1 = InputBox("Enter Alternate Title to Replace?", _
"Enter Replacement", Cells(i + 1, 1).Value)
If Len(Trim(s1)) 0 Then
cell.Value = s1
End If
End Select
End If
Next
End Sub


As always, I greatly appreciate your help.

Thanks in advance,
Ricky

*** Sent via Developersdex http://www.developersdex.com ***


  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default Msg Box on each Loop to Replace text

Hi Tom,
Upon debugging Sub ReplaceSpecifiedWordWithSpecifiedWord, I've changed
the ans1 and ans2 to String and it worked... I'd really appreciate your
help if you can help me expand on this code a bit then this code would
be complete.

I'm trying to avoid the data entry into the search and replacement
inputboxes. Instead, could this code obtain the search and replace
items off a list that's stored in the same file where this code is
stored? When I open another file and call upon this code, the code
would loop through the items to search and replace.

Dim s As String, cell As Range, rng As Range
Dim ans1 As Long, ans2 As String, s1 As String, s2 As String, s3 As
String
Dim s4, s5, s6, s7 As String
Dim r1, r2, r3, r4, r5, r6, r7 As String

'Search Titles: Hoping to have the code read the items off of a list
rather than coding it inside this code.
s1 = "Search A"
s2 = "Search B"
s3 = "Search C"
s4 = "Search D"
s5 = "Search E"
s6 = "Search F"
s7 = "Search G"

'Replacement Titles: Hoping to have the code read the items off of a
list rather than coding it inside this code. This Replacement titles
would be listed side by side corresponding with the Search titles list.
r1 = "Replace A"
r2 = "Replace B"
r3 = "Replace C"
r4 = "Replace D"
r5 = "Replace E"
r6 = "Replace F"
r7 = "Replace G"

'The remainder of this code searches only s1 and replaces with only r1.
How do you make it loop to go through the rest of the items ie. s2, s3,
s4 etc. to replace with r2, r3, r4 etc.?

Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
For Each cell In rng

If LCase(cell.Value) = LCase(s1) Then
cell.Select
s = "[" & s1 & "]" & " Will Be Replaced By " & "[" & r1 & "]" &
vbNewLine _
& vbNewLine _
& "Yes: Continue" & vbNewLine _
& "No: Do Not Replace" & vbNewLine _
& "Cancel: Override to Input Alternate Title"

ans1 = MsgBox(s, vbYesNoCancel, "Select an Option")
Select Case ans1
Case vbYes
cell.Value = r1
Case vbCancel
ans2 = InputBox("Enter Alternate Title to Replace",
"Enter Replacement")
If Len(Trim(ans2)) 0 Then
cell.Value = ans2
End If
End Select
End If
Next

End Sub


As always, thank-you so much.

Sincerely,
Ricky

*** Sent via Developersdex http://www.developersdex.com ***
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
Can I replace a ' at the beginning of a text cell using Replace Hilde Excel Discussion (Misc queries) 4 September 10th 07 06:22 PM
find text in cell and replace it with part of the text in that ce. jules Excel Discussion (Misc queries) 3 May 3rd 07 10:18 AM
Replace using Do loop Dave B[_9_] Excel Programming 1 November 29th 05 07:35 PM
Find & Replace / Loop & Vlookup thom hoyle Excel Programming 5 June 25th 05 12:56 AM
Replace Loop Darrell[_4_] Excel Programming 1 November 21st 03 04:49 PM


All times are GMT +1. The time now is 06:48 PM.

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

About Us

"It's about Microsoft Excel"