• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルに貼り付けた自作関数での書式反映について)

セルに貼り付けた自作関数での書式反映について

fumufumu_2006の回答

回答No.4

呼び出す時にcell情報も渡してしまうのはどうでしょうか? Public Function week(d As Date, row As Long, column As Integer) As String ... Case vbSunday week = "日" ActiveSheet.Cells(row, column).Font.ColorIndex = 3 ... End Function にして、 =week(A1,ROW(),COLUMN()) で呼び出す。 または、 Public Function week(d As Date, row As Long, column As Integer, filename As String) As String ... Case vbSunday week = "日" Sheets(Mid(filename, InStrRev(filename, "]") + 1)).Cells(row, column).Font.ColorIndex = 3 ... End Function にして、 =week(A1,ROW(),COLUMN(),CELL("filename")) で呼び出す。

nnnnnon
質問者

補足

コメントありがとうございます。 実験はしていませんが http://support.microsoft.com/kb/170787/ja を読む限りは意図した使い方は出来ないかと、、、、 セルに貼り付けるときにrowとcolumnを引数で渡すと言うのも意図した 使い方とはちょっと違います、、、  

関連するQ&A

  • 関数が書かれているセル位置を知りたいのですが、、、

    実行環境は Excel 2000 新規ブックに、 標準モジュールを追加し、 Function Test()   Test = 2 End Function という関数を追加します。 Sheet1 の、 セル「A1」に「10」を入れます。 セル「A2」に「=Test() + A1」 セル「A1」を変更すると、 関数「Test()」が呼び出されます。 このとき、ActiveCell は「A1」を指しますが、 関数「Test()」の位置を知りたいのです。 「No.720361 質問:Excel VBA でFunctionプロシジャがどのセルから呼び出されたか知る方法」では Application.Caller で出来ているようですが、Test() 内で「TypeName(Application.Caller)」とすると、「Double」や「Error」が返ってきます。 (この「Double」の値も気になりますが、、、) 位置の取得方法を教えて下さい、よろしくお願いします。

  • Excel:自作のセル関数でエラーが発生

    Win2K、Excel97-2000-2002を使用しております。 以下のような関数を作成しました。 Public Function sss() As Boolean  On Error GoTo aaa   Range("A1").Value = "TEST"  sss = True Exit Function aaa:  MsgBox Err.Description  sss = False End Function これをSheet1のB1セルで呼びましたところ、 Rangeへのセットのところで以下のようなエラーが発生します。 「アプリケーション定義またはオブジェクト定義のエラーです。」 同関数をイミディエイトウインドウで実行しましたところ、正常に動きます。 セルの内容を変更するようなメソッドをセル関数として呼ぶことはしてはいけないのでしょうか。 御教授、御鞭撻の程、よろしくお願いいたします。

  • Excel 自作関数から特定のセルを参照して分岐

    以下のように、C列を参照して判断し、それに適した値を表示させる関数を作っています。 質問1:以下、どこが間違ってますでしょうか? 質問2:以下では、Columns(3)として参照していますが、列に名前を付けておき、それを関数から参照させることはできますでしょうか? Function test()  Select Case Worksheets("Sheet1").Columns(3).Value   Case "りんご"    test = "100円"   Case "みかん"    test = "150円"   Case "いちご"    test = "300円"   Case "すいか2"    test = "200円"  End Select End Function

  • 条件付書式でも色が変わらない

    カレンダー表示の「SUN」日曜日の所を赤く表示しようと思い 条件付書式でセルの値が次の値に等しいにして「SUN」 色を赤としたのですが色が変わりません 曜日表示はDATE関数で月を変えると自動で変わるようにしています ちなみに関数を使わないで表示すると色が変わります。 よろしくお願いします。

  • 自作関数から WndProc( ) を止める

    自作関数から WndProc( ) を止めるにはどうしたらいいんですか? LRESULT CALLBACK WndProc(…){  switch(msg){  case WM_COMMAND:   if(function f( ) == "END")return 0;   処理A;  break;  } } function f( ){  return "END" } こんな流れにしたいけど、WndProc( ) 内からでなく、 外から WndProc( ) を止めたいんです。 LRESULT CALLBACK WndProc(…){  switch(msg){  case WM_COMMAND:   function f( );   処理A;  break;  } } function f( ){  ? // WndProc( ) に return 0 とさせて 処理A を実行させない }

  • エクセルで、日曜日の表示を赤とする方法

    エクセル2002を使用しています。 縦行に年月日と曜日を表示させていますが 日曜日毎だけを赤文字にしたいのですが 自動的(数式でも可)で曜日を赤文字表示にするにはどうしたら よいでしょうか いままでは1週間分の日にちと曜日を縦に作り 日曜日を書式メニューのフォント欄で赤文字してする。 それをオートフィルを利用して転写(?)していました。 現在は年、月、日と別々の行を使用しているため オートフィルが旨くいかないケースが目立ち今回の疑問に遭遇しています。 IF関数でも結構ですし、数式があれば一番よいのですが 書式の関数などあるのか?とも思っています。 よろしくお願いします

  • EXCEL関数でメモ帳作成

    EXCEL関数初心者です。 添付ファイルのような月ごとのメモ帳を作成しています。 最初に見やすいように一行おきに緑色で塗りつぶしをしました。 土日に青、赤の色分けを条件付き書式で「=TEXT(B3,"aaa")="日”」 の関数で日曜日には赤、土曜日には青に塗りつぶしました。 他の曜日の最初の緑色が消えています。 緑色が消えないようにするにはどうしたらいいですか。

  • WEEKDAY関数と条件付き書式について

    EXCEL2010使用です。 B列に日付、C列に曜日の表を作成する場合、 WEEKDAY関数を使って 日付に対応する曜日を求めるのに、 例として曜日先頭セルがB4、種類を日曜日スタートに設定する場合、 「C4」セルに=WEEKDAY(B4,1)の関数を挿入、下方向にコピーします。 その後、日曜日の日付と曜日だけフォントの色を変更するため、 条件付き書式の「数式を使用して、書式設定するセルを決定」で、 数式を入力する場合、=WEEKDAY($B4)=1と入力しますが、 =WEEKDAY(B4,1)の「B4」と、=WEEKDAY($B4)=1の「$B4」の意味は分かるのですが、 なぜ「$B4」にしなければいけないのか?(この場合「B4」でも結果は同じです) どなたか教えてください。お願いします。

  • エクセル関数で教えてもらいたいです。会社のあるスケ

    エクセル関数で教えてもらいたいです。会社のあるスケジュール表をみたんですが、写真のようなweekdayという関数を使ってます。 これは私が書かれていたのを再現したものですが、日付が書かれているB列をC列でweekdayで読みにいって、数字じゃなく曜日を出していました。 しかも、土曜日は青色、日曜日と祝日は赤色になるようになんかしています。5列に対し色の反転を起こしてます。 マクロは使ってないと思います。 これどんなアルゴリズムでやってるんですか?

  • MS関数について

    MS()という関数をAccess97で作成しました。 Public Function MS(t) As String Select Case t Case "0" MS = "A" Case "1" MS = "B" Case Else MS = "" End Select End Function Access97からAccess2000への変換を行ったのですが、上記関数ではA,B,空文字を返さず、メッセージボックスで引数tを表示してしまいます。 OSはWinXP Proです。 まるで、msgbox()みたいな動きです。 色々調べましたが、MS()は予約されている訳ではないみたいでした。 調べ方が甘いのかもしれませんが、MS()関数について情報をお持ちの方、教えてください。