View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
ryguy7272 ryguy7272 is offline
external usenet poster
 
Posts: 2,836
Default Fill Right Variable Number of Columns, then Calculate Using Of

Thanks for the effort Dave. I actually did something slightly different
(thanks to Bernie's code):
http://www.microsoft.com/office/comm...=en-us&m=1&p=1


I went with this:
Sub BeginMonth()

Dim Mth As String
Dim Nbr As Long

Mth = InputBox("Please enter a beginning month.")

Range("C14").Select
ActiveCell = Mth

Nbr = InputBox("Please enter total number of months.")

Range("Z1").Select
ActiveCell = Nbr

Range("C14").Select
Selection.AutoFill Destination:=Range _
(Selection, Selection.Resize(1, Nbr))

Range("C15").Select
ActiveCell.FormulaR1C1 = "=R10C4/R27C5"
Range("C16").Select
ActiveCell.FormulaR1C1 = "=R15C3*R10C11"
Range("C17").Select

Range("C15:C16").Select
Selection.AutoFill Destination:=Range _
(Selection, Selection.Resize(1, Nbr))

Range("C15").Select
Selection.End(xlToRight).Select
ActiveCell.FormulaR1C1 = "=R10C4/R27C5/2"

Range("C16").Select
Selection.End(xlToRight).Select
ActiveCell.FormulaR1C1 = "=R15C3*R10C11/2"
End Sub

Now I am struggling with the second (and probably much harder) part.......
The values are calculating across just fine, so Range(廚15:C16) to
Selection.Resize(1, Nbr) fills in nicely. Now I am just trying to figure out
how to get Excel to select D16, then filldown one row, then select E16, then
filldown two rows, then select F16, then filldown three rows, etc, until I
get to the end of the columns, which is defined as Nbr. It must be something
like Offset(1,1). There has to be a loop so Excel knows where to stop;
basically looping until the column set as Num. Can anyone offer any help
with this?


Regards,
Ryan---


--
RyGuy


"Dave Peterson" wrote:

Maybe something like:

Option Explicit
Sub BeginMonth()

Dim Mth As String
Dim Nbr As Long

Do
Mth = InputBox(prompt:="Please enter a beginning month.", _
Default:=Format(Date, "mmmm"))

If Mth = "" Then
MsgBox "Quitting!"
Exit Sub
End If

If IsDate(Mth & " 1, 2007") Then
'whew, it's ok
Exit Do
Else
MsgBox "Please enter a month"
End If
Loop

ActiveSheet.Range("C14").Value = Mth

Nbr = CLng(Application.InputBox _
(prompt:="Please enter total number of months.", Type:=1))

If Nbr < 2 Then
MsgBox "Quitting!"
Exit Sub
End If

With ActiveSheet
.Range("C14").AutoFill Destination:=.Range("C14").Resize(1, Nbr)
End With

End Sub

Application.inputbox with type:=1 requires that the user enter a number. It
makes validating the input easier.


ryguy7272 wrote:

I am stuck on (what is probably) a simple macro. I am trying to prompt a
user to enter a month into C14 and then enter a number (letテ「ぎ┐s say 12 but it
varies) into another InputBox and then spread the months over that range.
This is what I have so far:

Sub BeginMonth()

Dim Mth As String
Dim Nbr As Long

Mth = InputBox("Please enter a beginning month.")

Range("C14").Select
ActiveCell = Mth

Nbr = InputBox("Please enter total number of months.")

Selection.AutoFill Destination:=Range("C14:D14"), Type:=xlFillDefault
Range("C14:D14").Select

ActiveCell.Offset(0, Nbr).Activate

With ActiveSheet
.Range("C14").AutoFill Destination:=.Range("C14" & Nbr)
End With


End Sub

It fails on AutoFill line.

Also, Iテ「ぎ┐d like to do a simple calculation in cell C15, such as =(D10/E27).
Then, Iテ「ぎ┐d like to fill right as many columns as the user enters (as mentioned
above, perhaps 12, but it will vary). Finally, in C16, Iテ「ぎ┐d like to do
another simple calculation, such as =(C15*K10), and again fill right and then
shift right one column (Offset 0,1) and down one row, then right one column
and down two rows, and right one column and down 3 rows, etc., until it
reaches the final column (12 or whatever the user enters).

Iテ「ぎ┐m sure it can be done and Iテ「ぎ┐m taking a crack at it now. If anyone has any
suggestions, please share. If I finish it off before I hear back from anyone
Iテ「ぎ┐ll post the solution here.

Regards,
Ryan--

--
RyGuy


--

Dave Peterson