Выводит в несколько строк календарик для нужного месяца, на котором подсвечена выбранная дата (и выделена текущая дата). Удобно для визуального отображения введенных дат, сроков на календарике
ФОРМАТ
Calendarik( C_Date )
C_Date - дата или поле с датой
УКАЗАНИЯ ПО ИСПОЛЬЗОВАНИЮ
Календарик отображается как текстовый параграф. Используйте шрифт небольшого размера и межстрочный интервал и позицию табулятора для настройки внешнего вида (например, Consolas 11 и Табулятор в позициях : 15,35,55,75,95,115)
Прототип: http://www.briandunning.com/cf/418 */
Код: Выделить всё
/*Calendarik( C_Date )
Автор: Алексей Сыч
Прототип: http://www.briandunning.com/cf/418
Назначение: Выводит в несколько строк календарик для нужного месяца, на котором подсвечена выбранная дата (и выделена текущая дата). Удобно визуального отображения введенных дат, контрольных сроков на привычном календарике (понедельник-воскресенье сверху вниз, а не слева направо).
Календарик отображается как текстовый параграф. Используйте шрифт небольшого размера и межстрочный интервал и позицию табулятора для настройки внешнего вида (например, Consolas 11 и Табулятор в позициях : 15,35,55,75,95,115)
*/
Let
(
[
//c_date=Date;
RED = RGB ( 200 ; 50 ; 50 ); // цвет для выходных
GREY = RGB ( 161 ; 161; 161 ); // цвета дней следующего и прошлого месяцев
BLUE = RGB ( 50 ; 50 ; 200 ); // цвет для сегодня
DAY15_DATE = Date(Month(C_Date);15;Year(C_Date)); //ПДМ - 15 день месяца
DAY15_DOW = Choose(DayOfWeek(DAY15_DATE);0;7;1;2;3;4;5;6);//ПДМДН- день недели
DAYS = Day(Date(Month(C_Date)+1;1;Year(C_Date))-1);//КДМ-количество дней в месяце
DAY15_DAYS_DOW= Choose(DayOfWeek(DAY15_DATE+DAYS);7;1;2;3;4;5;6);
TODAY = If( Month (Get(CurrentDate))=Month(c_Date) and Year(Get(CurrentDate))=Year(c_Date) ;
TextStyleAdd(TextColor(Day(Get(CurrentDate));GREY);Bold); // any other styles for today can be added here
Day(Get(CurrentDate))); // if today is not current month - no color
TODAY = If(Length ( TODAY ) =1 ; " " & TODAY;" " & TODAY); // adding <tab> and <space> to align one digit days
STRING = List(
" 1";
" 2";
" 3";
" 4";
" 5";
" 6";
" 7";
" 8";
" 9";
" 10";
" 11";
" 12";
" 13";
" 14";
" 15";
" 16";
" 17";
" 18";
" 19";
" 20";
" 21";
" 22";
" 23";
" 24";
" 25";
" 26";
" 27";
" 28";
" 29";
" 30";
" 31");
Formula =
"GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))";
STR = GetValue(STRING ; DAYS)
];
" "&Choose(Month(c_date);"";"январь";"февраль";"март";"апрель";"май";"июнь";"июль";"август";"сентябрь";"октябрь";"ноябрь";"декабрь")&¶&
Substitute(
//ряд Понедельников
Let($ROW=1;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;" ") //if current month
&¶&
//вторники
Let($ROW=2;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;"") //if current month
&¶&
//среды
Let($ROW=3;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;" ") //if current month ))
&¶&
//четверги
Let($ROW=4;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;" ") //if current month ))
&¶&
//пятницы
Let($ROW=5;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;" ") //if current month
&¶&
TextColor( //for weekends
//субботы
Let($ROW=6;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;" ") //if current month
&¶&
//воскресенья
Let($ROW=7;"")&
If(
Month(c_date)=Month (DAY15_DATE-14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE-14-(DAY15_DOW-$ROW) ))
;" ")//if
&
GetValue((STRING);Day(DAY15_DATE-7 -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE -(DAY15_DOW-$ROW) )) &
GetValue((STRING);Day(DAY15_DATE+7 -(DAY15_DOW-$ROW) )) &
If(
Month(c_date)=Month (DAY15_DATE+14-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+14-(DAY15_DOW-$ROW) ))
;" ") &
If(
Month(c_date)=Month (DAY15_DATE+21-(DAY15_DOW-$ROW));
GetValue((STRING);Day(DAY15_DATE+21-(DAY15_DOW-$ROW) ))
;" ") //if current month
;RED)//end of add color for weekends
//select c_date and today
;[ TODAY ; TODAY ]; // today
[GetValue(STRING;Day(c_Date)); //c_date with highlight
Let([a=GetValue(STRING;Day(c_Date));
a=TextColor(a;BLUE);
//a=TextSize(a;"12");
a=TextStyleAdd(Right(a;2);Bold+HighlightYellow)]; " "&a)]
)//end of select for c_date and today
) //let