電子書籍の厳選無料作品が豊富!

エクセル関数 → VBAへの変換
現在、エクセル関数で記述していた以下の命令をすべてVBAに置き換える必要があります。
理由は、VBAで初期化ボタンをつくってそのボタンを押したとき、対象セルにデフォルトでエクセル関数の
式を入れたいからです。

なので、エクセル関数を以下のようにVBAにいれていました
.Cells(7, 51).Formula = "C6&E6"
しかし、これを以下のようにすると、エラーになってしまいました。
.Cells(7, 51).Formula = "C6&" "&E6" '氏名の間に半角スペースを入れたいため

同様に、以下のものがすべてエラーになります。
.Cells(8, 51).Formula = "L9&M9&"年"&N9&"月"&O9&"日""
.Cells(9, 51).Formula = "IF(OR(ISNUMBER(SEARCH("090-",C9)),ISNUMBER(SEARCH("070-",C9)),ISNUMBER(SEARCH("080-",C9))),"",C9)"

どうすればよろしいでしょうか?

A 回答 (3件)

> .Cells(7, 51).Formula = "C6&E6"


.Cell(7, 51).Formula = "=C6&E6"

> .Cells(7, 51).Formula = "C6&" "&E6"
.Cells(7, 51).Formula = "=C6&"" ""&E6"

> .Cells(8, 51).Formula = "L9&M9&"年"&N9&"月"&O9&"日""
.Cells(8, 51).Formula = "=L9&M9&""年""&N9&""月""&O9&""日"""

> .Cells(9, 51).Formula = "IF(OR(ISNUMBER(SEARCH("090-",C9)),ISNUMBER(SEARCH("070-",C9)),ISNUMBER(SEARCH("080-",C9))),"",C9)"
.Cells(9, 51).Formula = "=IF(OR(ISNUMBER(SEARCH(""090-"",C9)),ISNUMBER(SEARCH(""070-"",C9)),ISNUMBER(SEARCH(""080-"",C9))),"""",C9)"

ポイントとして""で囲われた文字列中で「"」を使用したい場合、「'」に置き換えるか、"あ""い""う" など""を二つ重ねるようにします。
あとFormulaを使用する場合、先頭に=を入れてあげないと文字列として処理されますのでお気をつけて。
    • good
    • 0
この回答へのお礼

解決できました!
ご回答ありがとうございます!

お礼日時:2008/06/23 18:23

最後の数式だけですがこちらの方が簡単では?


.Cells(9, 51).Formula = "=IF(SUM(COUNTIF(C9,{""070-*"",""080-*"",""090-*""})),C9,"""")"
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2008/07/01 09:42

1.最初の=がありません。


2.式の途中の”は"" に直さなくてはなりません。

With ActiveSheet
.Cells(7, 51).Formula = "=C6&"" ""&E6"
.Cells(8, 51).Formula = "=L9&M9&""年""&N9&""月""&O9&""日"""
.Cells(9, 51).Formula = "=IF(OR(ISNUMBER(SEARCH(""090-"",C9)),ISNUMBER(SEARCH(""070-"",C9)),ISNUMBER(SEARCH(""080-"",C9))),"""",C9)"
End With
    • good
    • 0
この回答へのお礼

解決できました!
ご回答ありがとうございます!

お礼日時:2008/06/23 18:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!