Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10027 / 13644 ツリー ←次へ | 前へ→

【24128】セルに動的に計算式を記述したい りか 05/4/12(火) 19:24 質問[未読]
【24129】Re:セルに動的に計算式を記述したい ichinose 05/4/12(火) 19:42 発言[未読]
【24131】Re:セルに動的に計算式を記述したい りか 05/4/12(火) 21:09 質問[未読]
【24132】Re:セルに動的に計算式を記述したい ichinose 05/4/12(火) 22:00 発言[未読]
【24140】Re:セルに動的に計算式を記述したい りか 05/4/13(水) 10:30 質問[未読]
【24141】Re:セルに動的に計算式を記述したい Jaka 05/4/13(水) 10:56 発言[未読]
【24142】Re:セルに動的に計算式を記述したい りか 05/4/13(水) 11:31 お礼[未読]

【24128】セルに動的に計算式を記述したい
質問  りか  - 05/4/12(火) 19:24 -

引用なし
パスワード
   マクロでセルに動的に計算式を記述したいのですが、

chk_a = "=if(SUM(R" & start & ":R" & end & ")= " & cnt & ", msg1 ,msg2))"

s.Cells(start, 3).FormulaR1C1 = chk_a

実行すると、

=IF(SUM($1:$10)= 3,"msg1","msg2")

というように、変数部分は動的になるのですが、セル番地が R → $ に変わってしまってうまく算出できません…

【24129】Re:セルに動的に計算式を記述したい
発言  ichinose  - 05/4/12(火) 19:42 -

引用なし
パスワード
   ▼りか さん:
こんばんは。
>マクロでセルに動的に計算式を記述したいのですが、
>
>chk_a = "=if(SUM(R" & start & ":R" & end & ")= " & cnt & ", msg1 ,msg2))"
↑このとおりだとすると、エラーになりますけどね!!
まっ、この辺は記述ミスだとして・・・・

s.Cells(start, 3).Formula = chk_a
としてみてはどうでしょうか?

>
>実行すると、
>
>=IF(SUM($1:$10)= 3,"msg1","msg2")


>というように、変数部分は動的になるのですが、セル番地が R → $ に変わってしまってうまく算出できません…

【24131】Re:セルに動的に計算式を記述したい
質問  りか  - 05/4/12(火) 21:09 -

引用なし
パスワード
   >s.Cells(start, 3).Formula = chk_a
>としてみてはどうでしょうか?
うまくいきました!!!
ありがとうございます

>>chk_a = "=if(SUM(R" & start & ":R" & end & ")= " & cnt & ", msg1 ,msg2))"
>↑このとおりだとすると、エラーになりますけどね!!
>まっ、この辺は記述ミスだとして・・・・

すみません、記述ミスではなくて、分からなくて…

chk_a = "if(…
だとエラーにならないんですが、
chk_a = "=if(…
だとエラーになってしまうんですが、先頭に「=」"を使いたいときって
どうすればいいんでしょう…

あと
「msg1」とか「meg2」は定数なのですが、マクロではエラーにはならないけれど
エクセル上ではエラーになっちゃうので、"msg1"、"msg2"と表示させるにはどうすればよいのでしょうか?

たびたびすみません。
どなたか教えてください

【24132】Re:セルに動的に計算式を記述したい
発言  ichinose  - 05/4/12(火) 22:00 -

引用なし
パスワード
   ▼りか さん:
>>>chk_a = "=if(SUM(R" & start & ":R" & end & ")= " & cnt & ", msg1 ,msg2))"
>>↑このとおりだとすると、エラーになりますけどね!!
>>まっ、この辺は記述ミスだとして・・・・
記述の間違いはひとつではなさそうですが、
まず、endというのは、ステートメントですので予約語になります。
変数としては、使えませんよ!!
'=====================================================
Sub main()
  Dim start_rw As Long
  Dim end_rw As Long
  Dim cnt As Long
  Dim msg1 As String
  Dim msg2 As String
  msg1 = "A"
  msg2 = "B"
  start_rw = 1
  end_rw = 10
  cnt = 3
  chk_a = "=if(SUM(R" & start_rw & ":R" & end_rw & ")= " & _
      cnt & ",""" & msg1 & """,""" & msg2 & """)"
  s.Cells(start_rw, 3).Formula = chk_a
' ↑このsは、ご自分でセットしてください
'   
End Sub

【24140】Re:セルに動的に計算式を記述したい
質問  りか  - 05/4/13(水) 10:30 -

引用なし
パスワード
   ありがとうございます

試してみたのですが、
>  chk_a = "=if(SUM(R" & start_rw & ":R" & end_rw & ")= " & _
>      cnt & ",""" & msg1 & """,""" & msg2 & """)"

オブジェクトが設定されていません。というエラーになるます…

chk_a = "if(SUM(…
イコールを外すとうまくいきます。(でも、計算式にならない…)

chk_a = ""-"" & "if(SUM(…
これだと、エクセルで「false」となってしまいます…

特殊文字が入っている場合どうすればよいのでしょうか?

【24141】Re:セルに動的に計算式を記述したい
発言  Jaka  - 05/4/13(水) 10:56 -

引用なし
パスワード
   こんにちは。

▼りか さん:
>試してみたのですが、
>>  chk_a = "=if(SUM(R" & start_rw & ":R" & end_rw & ")= " & _
>>      cnt & ",""" & msg1 & """,""" & msg2 & """)"
>
>オブジェクトが設定されていません。というエラーになるます…

試してみましたがエラーになりませんでした。

Sub main()
  Dim start_rw As Long
  Dim end_rw As Long
  Dim cnt As Long
  Dim msg1 As String
  Dim msg2 As String
  msg1 = "A"
  msg2 = "B"
  start_rw = 1
  end_rw = 10
  cnt = 3
  chk_a = "=if(SUM(R" & start_rw & ":R" & end_rw & ")= " & _
      cnt & ",""" & msg1 & """,""" & msg2 & """)"
  Cells(2, 2).Formula = chk_a
    '↑ 適当なセルに書き込んでみました。
End Sub

りかさんが他のところで変更された物が間違っているように思えますが....。
どのように変更されたのでしょうか?
自身で手直しされて、「動きませんエラーになリます。」と言ってませんか?

>特殊文字が入っている場合どうすればよいのでしょうか?
状況が全く伝わりません。

【24142】Re:セルに動的に計算式を記述したい
お礼  りか  - 05/4/13(水) 11:31 -

引用なし
パスワード
   >りかさんが他のところで変更された物が間違っているように思えますが....。
>どのように変更されたのでしょうか?
>自身で手直しされて、「動きませんエラーになリます。」と言ってませんか?

すみません。
何か別のエラーのようでした。

chk_a = "=if(SUM(R" & start_rw & ":R" & end_rw & ")= " & _
      cnt & ",""" & msg1 & """,""" & msg2 & """)"
Cells(x, x).Formula = chk_a

p.Shapes("オプション 8").Select
With Selection

End With

Withほうでエラーになっていたのですが、

p.Shapes("オプション 8").Select
With Selection

End With

chk_a = "=if(SUM(R" & start_rw & ":R" & end_rw & ")= " & _
      cnt & ",""" & msg1 & """,""" & msg2 & """)"
Cells(x, x).Formula = chk_a

順番を逆にしたらエラーが出なくなりました。
原因はなぞです…


ありがとうございました!

10027 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free