• ベストアンサー

VBAで特定のセルに値を入力したい

ham_kamoの回答

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.7

No.2です。No.5さんへの補足を読みましたが、 > このとき、男女で食事に行った場合は、ユーザー定義関数内で条件分けされて > 計算されていることから(男だけの場合と男女の場合とで) > 関数内では男だけか男女かはわかっています。 ということなら、その部分だけ別関数にしてはいかがでしょうか。 たとえば IsMenOnly() というユーザ定義関数を元の関数のロジックを利用して作り、男だけの場合は True、男女なら False を返すようにして、 男の支払額を求める関数中の中では、 If IsMenOnly() Then  男だけの場合の支払額を計算 Else  男女の場合の男の支払額を計算 End If としておき、女性の支払額を表示するセルでは、 If(IsMenOnly(),"",女性の支払額を求める関数) というふうにすれば、うまくいきませんでしょうか。

star_blue
質問者

お礼

新しい発想ですね。 さっそく試してみたいと思います。 回答ありがとうございました。

star_blue
質問者

補足

つまりこういうことでしょうか? ・セルA1(男だけor男女を判断する関数が入っている)に  「True」 or 「False」を返す関数を入れる ・セルA2(男の支払額を求める関数が入っている)は  セルA1の結果を見て計算 ・セルA3(女の支払額を求める関数が入ってるセル)も  セルA1の結果を見て計算 それをするとセルが一つ余分に必要ですが できそうな気がしますね. 試してみます.

関連するQ&A

  • ユーザー定義関数で、選んだセルの下のセルの参照方法

    簡単なユーザー定義関数を作っています。 Function TEST(氏名) TEST = End Function 氏名のセルを選んで、その下のセルの値を参照したいのですが、どのようにしたら良いのでしょうか? OFFSET関数を使いたくも、選んだ氏名のセルをどう使うのかわかりません。 宜しくお願いします。

  • Excel VBA セルの値を変更後にVBA作動

    Excel VBAを活用して、特定のセルの値が変更されたときに、VBA処理を発動させることになりました。 処理といたしましては、C列(3列目)の4行目以下の空白セルに数値を入力するか、セルに入力されている数値を変更した場合にVBAを発動させたいです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 And Target.Row >= 4 Then MsgBox "セルの値が更新されました" End If End Sub 上記のコードを実行してみたところ、3列目(C列)の4行目を選択した段階でVBAが作動してしまいます。 セルの値変更後に作動するようにするには、どう修正すればよろしいでしょうか?

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • VBAで、セルの値をつなげて入力したいのですが・・・

    VBAで、セルの値をつなげて入力したいのですが・・・ エクセル2007を使用しています。 Ctrlキーで2つのセルを選択し、最初に選択したセルの値にスラッシュをつけて、 2番目に選択したセルの値をつなげ、再び1番目に選択したセルに代入したいと思っています。 例えば、A1セルに「佐藤」B1セルに「鈴木」と入力されており、 A1を選択し、Ctrlキーを押しながらB1セルを選択し、コマンドボタンを押すと A1セルに「佐藤 / 鈴木」と入力させたいと思っています。 選択するセルは、1番目も2番目も、変化します。 そこで、下記のようなマクロを書いてみたのですが、 「実行時エラー13 型が一致しません」というエラーが出ます。 Private Sub CommandButton7_Click() If Selection.Areas.Count <> 2 Then Exit Sub Dim a As Variant Dim b As Variant a = Selection.Areas(1) b = Selection.Areas(2) Selection.Areas(1) = a & "/" & b End Sub 変数の型が問題なのでしょうか? ちなみに Selection.Areas(1) = b とすると、2番目に選択した「鈴木」がA1に入力されます。 また、 Selection.Areas(1) = a & b としても同じエラーが出ます。 解決法があるなら、ご教授いただけませんでしょうか? よろしくお願いいたします。

  • セルから呼び出したプロシージャ内でセルの塗りつぶし

    初めて質問させていただきます 宜しくお願い致します セルから呼び出したプロシージャ内からセルの塗りつぶしを 実行しても塗りつぶしが有効になりません たとえば A1のセルに10を入力 B1のセルに=TEST(A1) と入力 マクロのモジュール内に Public Function TEST(tmp_No As Integer) As Integer TEST = tmp_No * 25 '(1)ここから If TEST = 250 Then    'Msgbox "チェック用MSG"    Cells(1, 1).Interior.ColorIndex = 38 End If '(2)ここまで End Function というファンクションプロシージャがあるとします 引数で10を持って行ってるので10×25で TESTが250になりB1には計算結果として 250と問題なく表示されています しかし (1)~(2)のセルの塗りつぶしは実行されません 仮にチェック用のメッセージボックスのコメント を外すとキチンとメッセージボックスは 表示されます また、塗りつぶしダケのマクロを作成し Public Sub cell_paint()    Cells(1, 1).Interior.ColorIndex = 38 End Sub 実行すると、これも問題なく動作しますので EXCELの設定ではないと判断しています セルから呼び出したプロシージャの時 だけ、動作しないようなのですが なぜでしょうか? 他の方法で回避可能でしょうか? ※実際には塗りつぶしの判定方法が  20個あり、条件付書式では対応出来ないので  マクロで処理を試みてます 宜しくお願い致します

  • セルに関数を入力せず求めた値を反映する

    excel2010 windows7 です。 セルA1に数式や関数を直接入力することなく シート名:データ の B1  に表示されている値を反映させる方法はないでしょうか? マクロは使わず。 お客様情報を入力するにあたり、エンドユーザーと契約者が同じ場合はそれぞれ入力しないといけないのですが、同じ場合はチェックボックスを使って同じ値が自動で入るようにしたいのですが、セルに直接数式を入れるとエンドユーザーと契約者が違う場合は数式の上に上書きになり、変更が出てエンドユーザーが契約者となった場合にチェックボックスを使っても式が消えていて使えなくなるので困っています。

  • 変数の値をセルから取得したい

    お世話になります。 下記のセル・VBAを入力しています。 私が希望する形は、 「test」に「5」が入って欲しいのですが、 「test」に「g_array(1, 1) 」が入ってしまいます。 ※変数をセルで指定したいのです。 どのようにすれば、testに「5」を入れる事ができるでしょうか? 何卒宜しくお願い致します。 -----VBA---- Sub sample() Dim g_array(3, 3) As Variant g_array(1, 1) = "5" Dim test As Variant test = Cells(10, 5).Value End Sub ----エクセルのcells(10.5)に入力した値---- g_array(1, 1) --------------------------------

  • 未入力セルとVBAについて

    エクセルのVBAについて教えて下さい。独学で調べたのですがわからず…お力をお借りしたいです。 未入力のセルがあった場合、入力しなければ保存できないマクロは知っているのですが、 では、それが結合セルであった場合はどの様になるのでしょうか?例えば、(A1~C1だったら) 又、複数の結合セルにその様な設定をしたい場合もどこに追加して行けばよいのでしょうか? 合わせて教えて頂けたら幸いです。 以下 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Sheets("sheet1").Range("A1") = "" Then MsgBox "必須項目セルが未入力です", 48, "入力エラー" Cancel = True Else ActiveWorkbook.Save End If End Sub

  • エクセル VBA セル範囲を指定

    functionプロシージャを作ろうとしてます。いわゆるユーザ定義関数です。 エクセルの関数でSUMが用意されており、SUM(セル範囲)のように書けば合計を返します。 同じようにセル範囲の指定を受けて計算結果を返すfunctionを作りたいのです。 function example(セル範囲 As double,・・・) As double 任意の範囲を指定して、その値を使って計算したいのです。 ・セル範囲の書き方というか、フォーマットの書き方 ・プロシージャ内で計算に使うために配列に読み込む方法

  • 【VBA】ハイパーリンクでセルに文字を正しく表示できない。

    【VBA】ハイパーリンクでセルに文字を正しく表示できない。 ハイパーリンクを設定しセルに数値を表示させる場合、 セルにもともと文字が入力されていれば、数値に置き換わります(a)が、 もともと入力されているのが数値の場合、別の数値に置き換わりません(b)。 例) (a)A1セルに「十」という漢字が入力されていたとします。   その時、下記コードを実行すればA1セルの値は「1」に変わります。   Sub test()    ActiveSheet.Hyperlinks.Add _    Anchor:=Range("A1"), _    Address:="http://www.yahoo.co.jp/", _    TextToDisplay:="1"   End Sub (b)一方、A1セルに「10」という数値が入力されていたとします。   その時、上記コードを実行してもA1のセルの値は「10」のままです。 なぜなのでしょうか? お分かりの方、教えてください。 尚、当方Excel2003を使用しております。 よろしくお願いします。