#1
|
|||
|
|||
.Replace does not always work
Hi everyone,
So I have some code that takes all HTML tags out of a memo like string of text. Here is the interesting thing. This code works fine one workbook but will not work at all on a different workbook. The only difference I have between the 2 is option explicit. Here is the code that I use. Again this has worked for other workbooks. Code:
Sub StripOutHTML () 'Takes out HTML elements of a text string Dim CheckRow as integer Dim TempString as string Dim WS as worksheet Dim WB as workbook Set WB = ThisWorkbook Set WS = WB.Worksheets("Sheet1") For CheckRow = 2 to 10 WS.Range("A" & CheckRow).replace "<li>", "- " WS.Range("A" & CheckRow).replace "<*>", " " WS.Range("A" & CheckRow).replace "*>", " " WS.Range("A" & CheckRow).replace "<*>", " " WS.Range("A" & CheckRow).replace "&*;", " " TempString = WS.Range("A" & CheckRow).value WS.Range("A" & CheckRow).value = Trim(TempString) Next CheckRow msgbox "Done" End Sub Thanks in advance. |
#2
|
||||
|
||||
You don't explicitly supply a number of the .replace parameters and perhaps the wrong ones are being assumed?
From help: "The settings for LookAt, SearchOrder, MatchCase, and MatchByte are saved each time you use this method. If you don’t specify values for these arguments the next time you call the method, the saved values are used. Setting these arguments changes the settings in the Find dialog box, and changing the settings in the Find dialog box changes the saved values that are used if you omit the arguments. To avoid problems, set these arguments explicitly each time you use this method." |
#3
|
|||
|
|||
Hmmmn that makes sense but I actually tried doing that already. I know my example code does not show that but I did try to add those parameters in and it still did not work. Im doing a different procedure that is not ideal right now I just find it odd that it only works some of the time. I will give what you are saying another try and see if I am over looking something.
Thanks |
#4
|
|||
|
|||
Here is an update on this problem. I tried setting the parameters and it still did not work. I actually forgot something very important when it comes to .replace. The reason it only works half the time is due to the length of the string. If the string is over 912 characters it simply will not work. I will be modifying my current code to store the string in separate variables of 900 characters. I wrote a simple code below to prove this theory. Thanks everyone for their help.
Code:
Option Explicit Sub ReplaceTest() ' checks to see what limit a .replace can handle. Dim CheckAmount As Integer Dim Success As Boolean CheckAmount = 2000 Success = False Do Until Success = True Range("a1").Value = WorksheetFunction.Rept("x", CheckAmount) Range("a1").Replace "x", "s" If Left(Range("a1").Value, 1) = "s" Then Success = True Exit Do End If CheckAmount = CheckAmount - 1 Loop Range("B1").Value = CheckAmount + 1 ' Add one since the loop took one away. MsgBox "The replace works with " & CheckAmount + 1 & " characters max." End Sub |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Multiple replace does not work with 2013 | fprm67 | Word VBA | 11 | 04-15-2014 03:14 PM |
Find and replace No longer work | TJH | Word | 3 | 03-25-2014 11:33 PM |
work of labor vs work of excavator | ketanco | Project | 1 | 02-11-2014 08:53 AM |
work vs regular work. and how regular work works | user0044 | Project | 5 | 03-06-2012 07:28 AM |
Help with find and replace or query and replace | shabbaranks | Excel | 4 | 03-19-2011 08:38 AM |