ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Selecting a variable number of cells in a row (https://www.excelbanter.com/excel-programming/322172-selecting-variable-number-cells-row.html)

Bob C

Selecting a variable number of cells in a row
 
Beginner questions: I want to write a macro to enter a sequence of monthly
cash flows in a row, say $10 for 5 periods, followed by $15 in the next four
months. If doing it manually, I would select a range of cells in a row for a
Fill | Series operation.

Automating it, I know:

B2= dollar value in first cash flow series
C2= number of months in first cash flow series
B3= dollar value in second cash flow series
C3= number of months in secon cash flow series

1. In the first operation, I want to fill a range, call it 'Range 1' with a
series of values contained in B2. I know the left most cell in the range,
let's say B15, but the number of cells to the right captured in the range
will vary according to data input into C2. So, for example, if B2=$10, and
C2 is '5', then the selected range would be B15:F15, and each cell in the
range would contain the number $10. How is that written in Visual Basic?

2. In the second operation, I am filling the adjacent range of cells to the
right of 'Range 1' above, so in this case, I will not know the location of
the first empty cell in Row 15, until the selection created in 'Range 1' is
filled with the data series. And then, this next range, 'Range 2', needs to
be selected based on a variable contained in cell C3, and filled with the
value in B3, let's say $15.

So if B2=$10 and B3=4, 'Range 1' would be B15:F15, and the cells would
contain the value $10, and 'Range 2' would be G15:J15, and the cells would
contain $15.

Pretty basic, I'm sure, but way over my head.

Ben

Selecting a variable number of cells in a row
 
try this
S
ub fill()
For m = 2 To 1 + Range("c2").Value
Cells(15, m).Value = Range("b2").Value
Next
For j = m To m + Range("c3").Value - 1
Cells(15, j).Value = Range("b3").Value
Next
End Sub

"Bob C" wrote:

Beginner questions: I want to write a macro to enter a sequence of monthly
cash flows in a row, say $10 for 5 periods, followed by $15 in the next four
months. If doing it manually, I would select a range of cells in a row for a
Fill | Series operation.

Automating it, I know:

B2= dollar value in first cash flow series
C2= number of months in first cash flow series
B3= dollar value in second cash flow series
C3= number of months in secon cash flow series

1. In the first operation, I want to fill a range, call it 'Range 1' with a
series of values contained in B2. I know the left most cell in the range,
let's say B15, but the number of cells to the right captured in the range
will vary according to data input into C2. So, for example, if B2=$10, and
C2 is '5', then the selected range would be B15:F15, and each cell in the
range would contain the number $10. How is that written in Visual Basic?

2. In the second operation, I am filling the adjacent range of cells to the
right of 'Range 1' above, so in this case, I will not know the location of
the first empty cell in Row 15, until the selection created in 'Range 1' is
filled with the data series. And then, this next range, 'Range 2', needs to
be selected based on a variable contained in cell C3, and filled with the
value in B3, let's say $15.

So if B2=$10 and B3=4, 'Range 1' would be B15:F15, and the cells would
contain the value $10, and 'Range 2' would be G15:J15, and the cells would
contain $15.

Pretty basic, I'm sure, but way over my head.


Bob C

Selecting a variable number of cells in a row
 
Ben,

Thanks. Worked better than I expected. Was able to copy down to add
subsequent cash flows to the stream.

Next question: Now I want to sum the cash flows, but won't know the range
to sum until the range is built using your sub. I tried the macro recorder,
pointing first to the leftmost cell in the range, then hitting
shift-end-right to select the range, but in the vba editor, the cell
references were absolute. Any more ideas?

Bob.

"ben" wrote:

try this
S
ub fill()
For m = 2 To 1 + Range("c2").Value
Cells(15, m).Value = Range("b2").Value
Next
For j = m To m + Range("c3").Value - 1
Cells(15, j).Value = Range("b3").Value
Next
End Sub

"Bob C" wrote:

Beginner questions: I want to write a macro to enter a sequence of monthly
cash flows in a row, say $10 for 5 periods, followed by $15 in the next four
months. If doing it manually, I would select a range of cells in a row for a
Fill | Series operation.

Automating it, I know:

B2= dollar value in first cash flow series
C2= number of months in first cash flow series
B3= dollar value in second cash flow series
C3= number of months in secon cash flow series

1. In the first operation, I want to fill a range, call it 'Range 1' with a
series of values contained in B2. I know the left most cell in the range,
let's say B15, but the number of cells to the right captured in the range
will vary according to data input into C2. So, for example, if B2=$10, and
C2 is '5', then the selected range would be B15:F15, and each cell in the
range would contain the number $10. How is that written in Visual Basic?

2. In the second operation, I am filling the adjacent range of cells to the
right of 'Range 1' above, so in this case, I will not know the location of
the first empty cell in Row 15, until the selection created in 'Range 1' is
filled with the data series. And then, this next range, 'Range 2', needs to
be selected based on a variable contained in cell C3, and filled with the
value in B3, let's say $15.

So if B2=$10 and B3=4, 'Range 1' would be B15:F15, and the cells would
contain the value $10, and 'Range 2' would be G15:J15, and the cells would
contain $15.

Pretty basic, I'm sure, but way over my head.


Tom Ogilvy

Selecting a variable number of cells in a row
 
Sub WriteCashflow()
For i = 1 To Range("C2").Value + Range("C3").Value
If i <= Range("C2").Value Then
Range("B15").Offset(0, i - 1).Value = Range("B2").Value
Else
Range("B15").Offset(0, i - 1).Value = Range("B3").Value
End If
Next

End Sub

--
Regards,
Tom Ogilvy


"Bob C" wrote in message
...
Beginner questions: I want to write a macro to enter a sequence of

monthly
cash flows in a row, say $10 for 5 periods, followed by $15 in the next

four
months. If doing it manually, I would select a range of cells in a row

for a
Fill | Series operation.

Automating it, I know:

B2= dollar value in first cash flow series
C2= number of months in first cash flow series
B3= dollar value in second cash flow series
C3= number of months in secon cash flow series

1. In the first operation, I want to fill a range, call it 'Range 1' with

a
series of values contained in B2. I know the left most cell in the range,
let's say B15, but the number of cells to the right captured in the range
will vary according to data input into C2. So, for example, if B2=$10,

and
C2 is '5', then the selected range would be B15:F15, and each cell in the
range would contain the number $10. How is that written in Visual Basic?

2. In the second operation, I am filling the adjacent range of cells to

the
right of 'Range 1' above, so in this case, I will not know the location of
the first empty cell in Row 15, until the selection created in 'Range 1'

is
filled with the data series. And then, this next range, 'Range 2', needs

to
be selected based on a variable contained in cell C3, and filled with the
value in B3, let's say $15.

So if B2=$10 and B3=4, 'Range 1' would be B15:F15, and the cells would
contain the value $10, and 'Range 2' would be G15:J15, and the cells would
contain $15.

Pretty basic, I'm sure, but way over my head.





All times are GMT +1. The time now is 06:46 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com