PC Review


Reply
Thread Tools Rate Thread

Concatenating Loop

 
 
John Pierce
Guest
Posts: n/a
 
      2nd Oct 2008
I need to make the following code work for a variable number of rows
and stop when it reaches a #VALUE! error.


Public Sub ConcatenateEmail()
Dim myString As String
Dim r As Long

myString = ""

For r = 4 To 585
myString = myString & Cells(r, "G") & ","
Next r

myString = Left(myString, Len(myString) - 1)
Range("A2") = myString
End Sub
 
Reply With Quote
 
 
 
 
RyanH
Guest
Posts: n/a
 
      2nd Oct 2008
I think this is what you are looking for. The loop will run from row 4 to
last row in Col. G.

Option Explicit

Public Sub ConcatenateEmail()

Dim myString As String
Dim r As Long

For r = 4 To Cells(Rows.Count, "G").End(xlUp).Row
If IsError(Cells(r, "G")) Then
Exit For
Else
myString = myString & Cells(r, "G").Value & ","
End If
Next r

myString = Left(myString, Len(myString) - 1)
Range("A2") = myString

End Sub


--
Cheers,
Ryan


"John Pierce" wrote:

> I need to make the following code work for a variable number of rows
> and stop when it reaches a #VALUE! error.
>
>
> Public Sub ConcatenateEmail()
> Dim myString As String
> Dim r As Long
>
> myString = ""
>
> For r = 4 To 585
> myString = myString & Cells(r, "G") & ","
> Next r
>
> myString = Left(myString, Len(myString) - 1)
> Range("A2") = myString
> End Sub
>

 
Reply With Quote
 
RyanH
Guest
Posts: n/a
 
      2nd Oct 2008
This code will loop from row 4 to last row in Col. G

Option Explicit

Public Sub ConcatenateEmail()

Dim myString As String
Dim r As Long

For r = 4 To Cells(Rows.Count, "G").End(xlUp).Row
If IsError(Cells(r, "G")) Then
Exit For
Else
myString = myString & Cells(r, "G").Value & ","
End If
Next r

myString = Left(myString, Len(myString) - 1)
Range("A2") = myString

End Sub

Hope this helps! If so please let me know by clicking "YES" below.
--
Cheers,
Ryan


"John Pierce" wrote:

> I need to make the following code work for a variable number of rows
> and stop when it reaches a #VALUE! error.
>
>
> Public Sub ConcatenateEmail()
> Dim myString As String
> Dim r As Long
>
> myString = ""
>
> For r = 4 To 585
> myString = myString & Cells(r, "G") & ","
> Next r
>
> myString = Left(myString, Len(myString) - 1)
> Range("A2") = myString
> End Sub
>

 
Reply With Quote
 
John Pierce
Guest
Posts: n/a
 
      11th Oct 2008
New, but similar, problem. I would like to put the cell contents of
Col F, from Row 4 to the first Error (#VALUE!) into an array and then
write the array into Col A of another sheet. Capeesh?
 
Reply With Quote
 
RyanH
Guest
Posts: n/a
 
      11th Oct 2008
You don't have to fill an array to accomplish what you need. I added one
line to the code I gave you earlier which will do what your second question
is asking. You may need to adjust the sheet name. I assumed that the sheet
you are copying too has a header.

Option Explicit

Public Sub ConcatenateEmail()

Dim myString As String
Dim r As Long

For r = 4 To Cells(Rows.Count, "G").End(xlUp).Row
If IsError(Cells(r, "G")) Then
Range("F4:F" & r).Value = Sheets("Sheet2").Range("A2:A" &
r).Value
Exit For
Else
myString = myString & Cells(r, "G").Value & ","
End If
Next r

myString = Left(myString, Len(myString) - 1)
Range("A2") = myString

End Sub

Hope this helps! If so, then click "YES" below. Thanks!
--
Cheers,
Ryan


"RyanH" wrote:

> This code will loop from row 4 to last row in Col. G
>
> Option Explicit
>
> Public Sub ConcatenateEmail()
>
> Dim myString As String
> Dim r As Long
>
> For r = 4 To Cells(Rows.Count, "G").End(xlUp).Row
> If IsError(Cells(r, "G")) Then
> Exit For
> Else
> myString = myString & Cells(r, "G").Value & ","
> End If
> Next r
>
> myString = Left(myString, Len(myString) - 1)
> Range("A2") = myString
>
> End Sub
>
> Hope this helps! If so please let me know by clicking "YES" below.
> --
> Cheers,
> Ryan
>
>
> "John Pierce" wrote:
>
> > I need to make the following code work for a variable number of rows
> > and stop when it reaches a #VALUE! error.
> >
> >
> > Public Sub ConcatenateEmail()
> > Dim myString As String
> > Dim r As Long
> >
> > myString = ""
> >
> > For r = 4 To 585
> > myString = myString & Cells(r, "G") & ","
> > Next r
> >
> > myString = Left(myString, Len(myString) - 1)
> > Range("A2") = myString
> > End Sub
> >

 
Reply With Quote
 
John Pierce
Guest
Posts: n/a
 
      11th Oct 2008
Thanks, Ryan, but as I said the problem has changed. I don't want to
concatenate the cell contents into a single string. I need them listed
on the other sheet in a column. The difference is that on sheet 1, col
F is formulas and on Sheet 2, col A, I want to 'paste special' the
values for further work. For that, I think capturing it all in an
array and then writing it all at once be most efficient.
 
Reply With Quote
 
RyanH
Guest
Posts: n/a
 
      11th Oct 2008
I am confused on what you are needing. Please explain in detail and give an
example of what you are wanting.
--
Cheers,
Ryan


"John Pierce" wrote:

> Thanks, Ryan, but as I said the problem has changed. I don't want to
> concatenate the cell contents into a single string. I need them listed
> on the other sheet in a column. The difference is that on sheet 1, col
> F is formulas and on Sheet 2, col A, I want to 'paste special' the
> values for further work. For that, I think capturing it all in an
> array and then writing it all at once be most efficient.
>

 
Reply With Quote
 
John Pierce
Guest
Posts: n/a
 
      11th Oct 2008
The project is this:
1. Import a file consisting of one continuous string of hundreds of e-
mail addresses.
2. Parse the string into one address per line and clean out junk
3. Eliminate duplicates
4. Fix broken addresses: missing “@” or “.”
5. Reconcatenate for reuse.
You helped me get from step 2 to step 5, but I had neglected steps 3
and 4. So now I want to have the parsed addresses, (which are on
Sheet1, Col F, in the form of formulas) copied to another sheet as
values (text) so I can edit them.
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: Simple window application with a loop and a button to eventuallystop the loop Joe Cool Microsoft C# .NET 15 29th Jul 2009 08:40 PM
returning back to loop check condition without completing the loop ashish128 Microsoft Excel Programming 13 3rd Apr 2008 12:53 PM
loop through field names, then use to loop through records topopulate grid pmacdiddie@gmail.com Microsoft Access Form Coding 1 4th Jan 2008 01:13 PM
Concatenating Object instance name in loop??? Isz Microsoft C# .NET 3 4th Jun 2004 02:58 PM
Re: Creating a loop for concatenating text Bryan Reich [MSFT] Microsoft Access Macros 3 2nd Apr 2004 01:18 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 10:22 AM.