View Single Post
  #4   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

Whoa! Pretty Cool stuff Dave! I tried your version and it works great. In
the meantime I tried a few things and got this to work:

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))
End Sub


Any suggestions as to what to do for the second part?

--
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