![]() |
|
#1
|
|||
|
|||
![]()
Yes this code should do that.
Code:
Option Explicit Sub RemoveLineBreaks() 'Looks at row 1 to find 2 columns and then runs a script to remove 'all line breaks from the range Dim CheckRow As Long, TotalRows As Long Dim BadData As Variant, x As Integer Dim ICol As Integer, NCol As Integer, CheckCol As Integer Dim CheckNstring As String, CheckIstring As String, CheckColString As String Dim NewNstring As String, NewIstring As String 'Set the variables and find the needed columns TotalRows = Range("A50000").End(xlUp).Row On Error Resume Next ICol = Range("1:1").Find("Items", LookAt:=xlWhole).Column NCol = Range("1:1").Find("No.", LookAt:=xlWhole).Column 'Check if column numbers were found If ICol = 0 Then MsgBox ("Cannot find the term 'Items' in Row 1." & vbLf & "Please update and try again.") End End If If NCol = 0 Then MsgBox ("Cannot find the term 'No.' in Row 1." & vbLf & "Please update and try again.") End End If On Error GoTo 0 'Reset error handling BadData = Array(vbCr, vbLf, vbCrLf, Chr(10), Chr(13)) 'Fix the column headers For CheckCol = 1 To 255 CheckColString = Cells(1, CheckCol).Value For x = 0 To UBound(BadData) CheckColString = WorksheetFunction.Substitute(CheckColString, BadData(x), " ") Next x Cells(1, CheckCol).Value = Trim(CheckColString) If Cells(1, CheckCol).Value = "" Then Exit For 'Exit loop when there is no more data CheckColString = "" Next CheckCol 'Check the 2 columns For CheckRow = 2 To TotalRows CheckIstring = Cells(CheckRow, ICol).Value CheckNstring = Cells(CheckRow, NCol).Value For x = 0 To UBound(BadData) CheckIstring = WorksheetFunction.Substitute(CheckIstring, BadData(x), ",") CheckNstring = WorksheetFunction.Substitute(CheckNstring, BadData(x), ",") Next x Cells(CheckRow, ICol).Value = CheckIstring Cells(CheckRow, NCol).Value = CheckNstring 'Clean up Vars CheckIstring = "" CheckNstring = "" Debug.Print TotalRows - CheckRow & " Records Left." Next CheckRow MsgBox "Complete" End Sub As for the multiple workbooks I will have a few more questions for you to get that set up but this code should run on any workbook no problem. Let me know if you have any questions. Thanks |
#2
|
|||
|
|||
![]() Quote:
To use your code I have to manually go into every header first and remove the carriage return so that your code can find header "items" and "no." The header actually looks like this: ------- items sheet ------- and ------- no. sheet ------- What's the best way to deal with the carriage return that's forcing the words "sheet" to wrap down to the next line in the header cell? Code:
ICol = Range("1:1").Find("Items", LookAt:=xlWhole).Column NCol = Range("1:1").Find("No.", LookAt:=xlWhole).Column 'Check if column numbers were found If ICol = 0 Then MsgBox ("Cannot find the term 'Items' in Row 1." & vbLf & "Please update and try again.") The headers in question are always the 2nd and 3rd column on row 9. It's ok if it replaces the header with a comma too. Just as long as I can remove the carriage returns on their entire column that would be fine. Like this example below: e.g., Start at row 9 <pre> col1 col2 col3 ---- ------- ------- Pos. Items No. sheet sheet ---- ------- ------- </pre> and from there remove carriage and replace with comma. <pre> col1 col2 col3 ---- -------------- ----------- Pos. Items,sheet No.,sheet ---- ------------- ----------- </pre> |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Alaska1 | Word | 1 | 01-14-2013 08:48 AM |
![]() |
sinbad | Word VBA | 6 | 02-27-2012 03:51 AM |
![]() |
revrossreddick | Word | 2 | 12-28-2011 01:33 PM |
Carriage Return Help | UCHelp | Word | 1 | 04-04-2010 10:11 PM |
![]() |
nam085 | Word | 1 | 03-04-2010 08:00 AM |