From: Jazz on
Using this code

Sub Insertformula ()
For Check = 4 To 40000 Step 2
If Cells(Check, "b") <> "" Then Cells(Check, "b") =
"=IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
Next Check
End Sub

My objective is to put this formula

=IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)

Into every even cell in Column B with data below it. However if you tried
the macro you would see it does not work. If I could get any help thank you.

From: ker_01 on
Please tell us what does not work; "it does not work" doesn't tell us where
it is doing something different than what you expect. Is it erroring out? If
so, on what line? Does it run but not do what you thought it should?

Without the rest of your code, I have to also address some of my assumptions
here;

"Step 2" means that this will only check every other row of your
spreadsheet. If you want to check every row to add the formula, then just
delete the "Step 2"

"Cells(Check, "b")" doesn't have any context. I'd expect something like
Activeworksheet.Cells or Sheets(1).cells or Sheets("Dec 2003 data").Cells, or
a with statement at the top; "With Sheets(1)"... ".Cells"...

Personally, I use almost exclusively A1 format with .range, so I'm not sure
about the syntax for cells, but for range you can explicitly indicate a
formula (and format), e.g.:
Sheet1.Range("A1").Formula =
Sheet1.Range("A1").FormulaArray =
Sheet1.Range("A1").FormulaR1C1 =

HTH,
Keith

"Jazz" wrote:

> Using this code
>
> Sub Insertformula ()
> For Check = 4 To 40000 Step 2
> If Cells(Check, "b") <> "" Then Cells(Check, "b") =
> "=IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
> Next Check
> End Sub
>
> My objective is to put this formula
>
> =IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)
>
> Into every even cell in Column B with data below it. However if you tried
> the macro you would see it does not work. If I could get any help thank you.
>
From: Project Mangler on
Not sure as to whether the formula does what you need, but this should be
nearer to working:

Sub Insertformula()
For Check = 4 To 40000 Step 2
If Cells(Check - 1, 2) <> "" Then Cells(Check, 2) = "=IF(OR(I5=" & Chr(34) &
Chr(34) & ",J5 =" & Chr(34) & Chr(34) & ")," & Chr(34) & Chr(34) &
",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
Next Check
End Sub




"Jazz" <Jazz(a)discussions.microsoft.com> wrote in message
news:FDD4FD07-6F58-46D1-B983-9D9ACB02EC93(a)microsoft.com...
> Using this code
>
> Sub Insertformula ()
> For Check = 4 To 40000 Step 2
> If Cells(Check, "b") <> "" Then Cells(Check, "b") =
> "=IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
> Next Check
> End Sub
>
> My objective is to put this formula
>
> =IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)
>
> Into every even cell in Column B with data below it. However if you tried
> the macro you would see it does not work. If I could get any help thank
you.
>


From: Dave Peterson on
If you're going to fill a range with a formula that is essentially the same for
all the cells, you can use this technique when you do it manually:

Select the range to get the formula
Type the formula with respect to the activecell
hit ctrl-enter to fill the range with that (adjusted) formula.

Excel will adjust the formula -- just like if you had copied and pasted.

Instead of plopping the formula into almost 40000 cells, I used column A to
determine the last row to get the formula.

Option Explicit
Sub Insertformula()

Dim LastRow As Long

With ActiveSheet
'I used column A to find the last row
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

.Range("B4:B" & LastRow).Formula _
= "=IF(OR(I5="""",J5=""""),""""," _
& "NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
End With

End Sub

The other thing that's important is to double up those doublequotes in the
formula.


Jazz wrote:
>
> Using this code
>
> Sub Insertformula ()
> For Check = 4 To 40000 Step 2
> If Cells(Check, "b") <> "" Then Cells(Check, "b") =
> "=IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
> Next Check
> End Sub
>
> My objective is to put this formula
>
> =IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)
>
> Into every even cell in Column B with data below it. However if you tried
> the macro you would see it does not work. If I could get any help thank you.

--

Dave Peterson
From: Jazz on
Thank you ker_01. I will think a lot about your points and keep them in mind
if I post another question.

"ker_01" wrote:

> Please tell us what does not work; "it does not work" doesn't tell us where
> it is doing something different than what you expect. Is it erroring out? If
> so, on what line? Does it run but not do what you thought it should?
>
> Without the rest of your code, I have to also address some of my assumptions
> here;
>
> "Step 2" means that this will only check every other row of your
> spreadsheet. If you want to check every row to add the formula, then just
> delete the "Step 2"
>
> "Cells(Check, "b")" doesn't have any context. I'd expect something like
> Activeworksheet.Cells or Sheets(1).cells or Sheets("Dec 2003 data").Cells, or
> a with statement at the top; "With Sheets(1)"... ".Cells"...
>
> Personally, I use almost exclusively A1 format with .range, so I'm not sure
> about the syntax for cells, but for range you can explicitly indicate a
> formula (and format), e.g.:
> Sheet1.Range("A1").Formula =
> Sheet1.Range("A1").FormulaArray =
> Sheet1.Range("A1").FormulaR1C1 =
>
> HTH,
> Keith
>
> "Jazz" wrote:
>
> > Using this code
> >
> > Sub Insertformula ()
> > For Check = 4 To 40000 Step 2
> > If Cells(Check, "b") <> "" Then Cells(Check, "b") =
> > "=IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)"
> > Next Check
> > End Sub
> >
> > My objective is to put this formula
> >
> > =IF(OR(I5="",J5=""),"",NETWORKDAYS(I5,J5,Holidays!A$1:A$39)-1)
> >
> > Into every even cell in Column B with data below it. However if you tried
> > the macro you would see it does not work. If I could get any help thank you.
> >