// 割り算して整数に丸める function div(x,y){ return int(x/y); } // ツェラーの公式 function zeller(y, m, d){ if(m < 3){ y--; m = m + 12; } // Wikipediaに掲載されていたコードを利用 return (div(5 * y, 4) - div(y, 100) + div(y, 400) + div((26 * m + 16), 10) + d) % 7; } // 最初の行のセルの生成。 function firstweek(y, m, x){ if(x > 0){ return x; } return ""; } // うるう年の計算 function isLeapYear(y){ if(y % 4){ return false; }else if(y % 100){ return true; }else if(y % 400){ return false; }else{ return true; } } // 2行目以降のセルの生成。 function body(y, m, d){ days = 31; if(m == 4 || m == 6 || m == 9 || m == 11){ days = 30; }else if(m == 2){ if(isLeapYear(y)){ days = 29; }else{ days = 28; } } if(d <= days){ return d; }else{ return ""; } } // カレンダー用のセル内マクロを作成。 New(); [3,1] = GetYear(); [4,1] = "/"; [5,1] = GetMonth(); [1,2] = "日"; [2,2] = "月"; [3,2] = "火"; [4,2] = "水"; [5,2] = "木"; [6,2] = "金"; [7,2] = "土"; [7,3] = "=7 - Calendar.zeller([3,1],[5,1], 1)"; for(x=1; x<=6; x++){ [x,3] = "=Calendar.firstweek([3,1],[5,1],[7,3]-7+x)"; } for(y=4; y<=8; y++){ for(x=1; x<=7; x++){ [x,y] = "=Calendar.body([3,1],[5,1],[7,3]+(y-4)*7+x)"; } } MessageBox("「=f(x)」ボタンを押して、セル内計算式を有効にしてください。");