<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Сделаем это быстро &#187; MS Office</title>
	<atom:link href="http://doitq.ru/category/ms-office/feed/" rel="self" type="application/rss+xml" />
	<link>http://doitq.ru</link>
	<description>18,6% того, что вы хотели знать о своем компьютере</description>
	<lastBuildDate>Thu, 09 Feb 2012 15:15:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Пропихнуть картинку</title>
		<link>http://doitq.ru/2011/11/15/propixnut-kartinku/</link>
		<comments>http://doitq.ru/2011/11/15/propixnut-kartinku/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 15:56:47 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>

		<guid isPermaLink="false">http://doitq.ru/?p=1505</guid>
		<description><![CDATA[Вероятно, для вас не секрет, что большая часть межофисного документооборота происходит посредством старой доброй почты. Как передать файл контрагенту? Конечно, послать по email! Только вот загадочные админы любят ставить ограничения на размер вложения. На этот случай есть исконно корпоративные ящики на рамблере и мэйле. И никого не смущает поражающая воображение безопасность такой транзакции. Более того, [...]]]></description>
			<content:encoded><![CDATA[<p>Вероятно, для вас не секрет, что большая часть межофисного документооборота происходит посредством старой доброй почты. Как передать файл контрагенту? Конечно, послать по email! Только вот загадочные админы любят ставить ограничения на размер вложения. На этот случай есть исконно корпоративные ящики на рамблере и мэйле. И никого не смущает поражающая воображение безопасность такой транзакции. Более того, никого не смущают адреса вида nikolenka11111. Нормальный ящик для гендира, чо. Как современный <a href="http://techzona.net/oszor/1412-prime-note-galleria-qf770-igrovoy-noutbuk-s-173-dyuymovym-displeem.html">игровой ноутбук</a> водителю и древний пентиум инженеру — под автокадовские трехмерки — в порядке вещей.</p>
<p>А еще для вас не является секретом единственно правильный сермяжный способ пересылать картинки. Что нужно сделать с JPEG, чтобы он стал всем понятен, удобен и вообще обрел православность? Правильно, запихать в документ Word. Краски на фотографии сразу становятся ярче, а краешки файла глаже и он быстрее проскальзывает в ящик адресата.</p>
<p>Я сегодня в этом участвовал. На вопрос — а на фига запихивать полсотни фотографий в ворд — я получил ответ — иначе они распечатать не смогут. Возразить было нечего.</p>
<p>Наблюдалась только одна маленькая проблемка: файл весил 130 мегабайт. Конечно, предпочтительнее было ужать четырехметровые картинки правильными инструментами, и только потом вгонять в текстовый редактор, но файл уже был готов. Спасло то, что MS Word имеет подходящую опцию.</p>
<p>Щелкаете правой кнопкой на картинке, выбираете <strong>Формат рисунка</strong>, потом на вкладке <strong>Рисунок</strong> нажимаете кнопку <strong>Сжать</strong> и в появившемся окне можете сжимать ваши гигапиксельные снимки далеких вселенных.</p>
<p><a style="border-bottom:0px;" rel="attachment wp-att-1507" href="http://doitq.ru/2011/11/15/propixnut-kartinku/wordpics/"><img class="alignnone size-full wp-image-1507" style="border:0px" title="Картинки в Word" src="http://doitq.ru/wp-content/uploads/2011/11/wordpics.png" alt="Картинки в Word" width="360" height="294" /></a></p>
<p>Жаль, что нельзя самостоятельно задавать разрешение, но предлагаемые 200 dpi годятся для большинства случаев. Здесь же можно удалить невидимые части рисунков — если вы кадрировали снимок с пьянки, чтобы получить свое лицо, и использовали результат в резюме на должность специалиста по безопасности, эта опция поможет запалиться хотя бы не с первой же секунды.</p>
<p>Что такая фишка есть, я помнил, но сегодня с огромным облегчением нашел опцию <strong>Применить ко всем рисункам документа</strong>. Два мегабайта этой бурды ушло адресату через минуту. Вместо начальных 130 мегабайт.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2011/11/15/propixnut-kartinku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VBA Excel: Формула, заданная строкой</title>
		<link>http://doitq.ru/2008/08/26/vba-excel-formula-zadannaya-strokoj/</link>
		<comments>http://doitq.ru/2008/08/26/vba-excel-formula-zadannaya-strokoj/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 15:51:58 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Автоматизация]]></category>

		<guid isPermaLink="false">http://doitq.ru/2008/08/26/vba-excel-formula-zadannaya-strokoj/</guid>
		<description><![CDATA[Нарыл в загашнике еще одну интересную функцию для Excel. Возникла у меня нужда дать пользователю самому составить простенькую формулу с одной переменной (их, на самом деле строго две, но принцип понятен и на одной). Составить прямо на листе, не после знака &#171;=&#187;, а чтобы видно было. Результат вычисления используется в многих других местах.
' strVar - [...]]]></description>
			<content:encoded><![CDATA[<p>Нарыл в загашнике еще одну интересную функцию для Excel. Возникла у меня нужда дать пользователю самому составить простенькую формулу с одной переменной (их, на самом деле строго две, но принцип понятен и на одной). Составить прямо на листе, не после знака &laquo;=&raquo;, а чтобы видно было. Результат вычисления используется в многих других местах.</p>
<pre><span style="color: rgb(63, 127, 89);">' strVar - значение переменной  </span>
<span style="color: rgb(63, 127, 89);">' strFormula - строка, содержащая саму формулу, место, куда надо</span>
<span style="color: rgb(63, 127, 89);">' подставить переменную, обозначено символами VAR</span>

<span style="color: rgb(127, 0, 85); font-weight: bold;">Function</span> sheetFormula(strVar <span style="color: rgb(127, 0, 85); font-weight: bold;">As</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">String</span>, strFormula <span style="color: rgb(127, 0, 85); font-weight: bold;">As</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Variant</span>) <span style="color: rgb(127, 0, 85); font-weight: bold;">As</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Variant</span>

<span style="color: rgb(63, 127, 89);">' Если формула пустая, не тратим ресурсы</span>
<span style="color: rgb(127, 0, 85); font-weight: bold;">If</span> strFormula = <span style="color: rgb(42, 0, 255);">&quot;&quot;</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Then</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Exit</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Function</span>

<span style="color: rgb(63, 127, 89);">' Юзер - дурак, уберем крайние пробелы</span>
strFormula = <span style="color: rgb(127, 0, 85); font-weight: bold;">Trim</span>(strFormula)

<span style="color: rgb(63, 127, 89);">' Чем возиться с параметрами замены, проще все перевести</span>
<span style="color: rgb(63, 127, 89);">' в верхний регистр</span>
strFormula = <span style="color: rgb(127, 0, 85); font-weight: bold;">UCase</span>(strFormula)

<span style="color: rgb(63, 127, 89);">' Подставляем переменную простой заменой</span>
strFormula = Replace(strFormula, <span style="color: rgb(42, 0, 255);">&quot;VAR&quot;</span>, <span style="color: rgb(127, 0, 85); font-weight: bold;">CStr</span>(strVar))

<span style="color: rgb(63, 127, 89);">' Мой (ну почему только мой?!) фирменный финт:</span>
<span style="color: rgb(63, 127, 89);">' заменяем запятую на точку, позволяя пользователю</span>
<span style="color: rgb(63, 127, 89);">' использовать любой из этих знаков</span>
strFormula = Replace(strFormula, <span style="color: rgb(42, 0, 255);">&quot;,&quot;</span>, <span style="color: rgb(42, 0, 255);">&quot;.&quot;</span>)

<span style="color: rgb(63, 127, 89);">' Вычисляем все с помощью функции Evaluate.</span>
<span style="color: rgb(63, 127, 89);">' Конструкция выглядит загадочно, но только так я</span>
<span style="color: rgb(63, 127, 89);">' добился от этой функции стабильной работы.</span>
<span style="color: rgb(63, 127, 89);">' Что она там себе думает, не знаю.</span>
sheetFormula = Evaluate(<span style="color: rgb(127, 0, 85); font-weight: bold;">CStr</span>(strFormula) + <span style="color: rgb(42, 0, 255);">&quot;+0&quot;</span>)

<span style="color: rgb(127, 0, 85); font-weight: bold;">End</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Function</span>
</pre>
<p>Теперь можно попросить пользователя в одной ячейке вбить значение переменной, в другой &mdash; формулу, а результат использовать по всей книге.</p>
<p>Между прочим, кого-то из вас поджидает <a href="http://blograbota.ru">вакансия в Проф-Медиа Business Solutions</a>. Кого?</p>
<p>Также читайте всю <a href="http://doitq.ru/stati/seriya-postov-po-vba/">серию постов по <b>VBA</b></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2008/08/26/vba-excel-formula-zadannaya-strokoj/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://doitq.ru/2007/11/22/nedelya-besplatnyih-konsultatsiy-po-excel/</link>
		<comments>http://doitq.ru/2007/11/22/nedelya-besplatnyih-konsultatsiy-po-excel/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 13:43:43 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/11/22/nedelya-besplatnyih-konsultatsiy-po-excel/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/11/22/nedelya-besplatnyih-konsultatsiy-po-excel/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>VBA: Фальсификация результатов наблюдений в Excel</title>
		<link>http://doitq.ru/2007/09/15/vba-falsifikatsiya-rezultatov-nablyudeniy-v-excel/</link>
		<comments>http://doitq.ru/2007/09/15/vba-falsifikatsiya-rezultatov-nablyudeniy-v-excel/#comments</comments>
		<pubDate>Sat, 15 Sep 2007 18:48:11 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Автоматизация]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/09/15/vba-falsifikatsiya-rezultatov-nablyudeniy-v-excel/</guid>
		<description><![CDATA[Посмотрим, как делать собственные функции в дополнение к встроенным в Excel.
Предположим, у нас есть таблица с двумя столбиками с парами взаимосвязанных параметров. Понаблюдали мы раз десять за чем там надо наблюдать, записали результаты, увидели, что зависимость линейная, и стало нам лень остальные двести измерений делать. Первый столбик мы заполним от балды, введем какой-нибудь коэффициент, а [...]]]></description>
			<content:encoded><![CDATA[<p>Посмотрим, как делать собственные функции в дополнение к встроенным в Excel.</p>
<p>Предположим, у нас есть таблица с двумя столбиками с парами взаимосвязанных параметров. Понаблюдали мы раз десять за чем там надо наблюдать, записали результаты, увидели, что зависимость линейная, и стало нам лень остальные двести измерений делать. Первый столбик мы заполним от балды, введем какой-нибудь коэффициент, а для второго значения напишем функцию.</p>
<p>Примерно такую:</p>
<p><span style="color: #3f7f59">' Очень-очень хитрая функция<br />
' аргументы:<br />
' myValue - значение (целое)<br />
' coefficient - коэффициент (вещественное)<br />
' функция возвращает значение типа variant для того,<br />
' чтобы мы могли запихать туда сообщение об ошибке</span><br />
<span style="font-weight: bold; color: #7f0055">Function</span> Falshivka(myValue <span style="font-weight: bold; color: #7f0055">As</span> <span style="font-weight: bold; color: #7f0055">Integer</span>, _<br />
coefficient <span style="font-weight: bold; color: #7f0055">As</span> <span style="font-weight: bold; color: #7f0055">Double</span>) <span style="font-weight: bold; color: #7f0055">As</span> <span style="font-weight: bold; color: #7f0055">Variant</span><br />
<span style="color: #3f7f59">' вводим переменную для промежуточных расчетов</span><br />
<span style="font-weight: bold; color: #7f0055">Dim</span> Res <span style="font-weight: bold; color: #7f0055">As</span> <span style="font-weight: bold; color: #7f0055">Double<br />
</span><br />
<span style="color: #3f7f59">' сердце и мотор функции - вычисление</span><br />
Res = myValue * coefficient</p>
<p><span style="color: #3f7f59">' а теперь разбодяжим слишком правильный результат.</span><br />
<span style="color: #3f7f59">' инициализируем генератор случайных чисел</span><br />
<span style="font-weight: bold; color: #7f0055">Randomize</span></p>
<p><span style="color: #3f7f59">' и используем его (функция rnd вернет случайное<br />
' число от 0 до 1)</span><br />
<span style="color: #3f7f59">' таким образом мы получим некоторой разброс<br />
' вокруг вычисленного значения</span><br />
Res = Res + (<span style="font-weight: bold; color: #7f0055">Rnd</span> - 0.5) * (Res * 0.3)</p>
<p><span style="color: #3f7f59">' для интереса предположим, что при исходном<br />
' значении больше нуля, результат тоже обязан<br />
' быть положительным и ненулевым. Проверим это</span><br />
<span style="font-weight: bold; color: #7f0055">If</span> myValue &gt; 0 And (Res &lt; 0 Or Res = 0) <span style="font-weight: bold; color: #7f0055">Then</span><br />
<span style="color: #3f7f59">   ' ай, не повезло! придется выводить сообщение<br />
' </span><span style="color: #3f7f59">об ошибке, да текстовое,</span><br />
<span style="color: #3f7f59">' чтобы заметно было, а потом - ручками, ручками...</span><br />
Falshivka = <span style="color: #2a00ff">"-= 0 =-"</span><br />
<span style="font-weight: bold; color: #7f0055">Else</span><br />
<span style="color: #3f7f59">' все. Присваиваем функции правильный результат.</span><br />
<span style="color: #3f7f59">' Просто пишем имя нашей функции, знак «равно» и то,<br />
' что она должна вернуть.</span><br />
Falshivka = Res<br />
<span style="font-weight: bold; color: #7f0055">End</span> <span style="font-weight: bold; color: #7f0055">If<br />
End</span> <span style="font-weight: bold; color: #7f0055">Function</span></p>
<p>Помните, что случайные значения Rnd вовсе не случайны! Было время, я наблюдал повторяющиеся последовательности среди чисел, что она выдает.</p>
<p>Вот так ненавязчиво можно обмануть доверившихся вам людей. Не делайте этого! Такой примитивный и безграмотный обман быстро откроется. Зато мы создали собственную функцию, ничем не хуже встроенной. Теперь в любой ячейке можно вбить «=falshivka()», и в скобках подставить ссылки на ячейки с нужными данными.</p>
<p>Не палите меня, ладно?</p>
<p>Также читайте всю <a href="http://doitq.ru/stati/seriya-postov-po-vba/">серию постов по <b>VBA</b></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/09/15/vba-falsifikatsiya-rezultatov-nablyudeniy-v-excel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VBA.Excel.2: Домножаем несколько ячеек</title>
		<link>http://doitq.ru/2007/06/24/vbaexcel2-domnozhaem-neskolko-yacheek/</link>
		<comments>http://doitq.ru/2007/06/24/vbaexcel2-domnozhaem-neskolko-yacheek/#comments</comments>
		<pubDate>Sun, 24 Jun 2007 11:32:32 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Автоматизация]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/06/24/vbaexcel2-domnozhaem-neskolko-yacheek/</guid>
		<description><![CDATA[Продолжим разбирать простенькие примеры скриптов на VBA для Excel. Первая часть.
Иногда возникает надобность добавить одно число к куче разных ячеек, или домножить их на какой-то коэффициент.

' MultiplicateSelection
' домножает выделенные ячейки на число с округлением до десятков

Sub MultiplicateSelection()
    ' объявляем переменные
    Dim Koef As Variant, cl As Range
   [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжим разбирать простенькие примеры скриптов на VBA для Excel. <a href="http://doitq.ru/2007/06/14/vbaexcel-zamena-formul-znacheniyami/">Первая часть</a>.</p>
<p>Иногда возникает надобность добавить одно число к куче разных ячеек, или домножить их на какой-то коэффициент.<br/></p>
<pre xml:space="preserve">
<span style="COLOR: rgb(63,127,89)">' MultiplicateSelection</span>
<span style="COLOR: rgb(63,127,89)">' домножает выделенные ячейки на число с округлением до десятков</span>

<span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Sub</span> MultiplicateSelection()
    <span style="COLOR: rgb(63,127,89)">' объявляем переменные</span>
    <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Dim</span> Koef <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">As</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Variant</span>, cl <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">As</span> Range
    <span style="COLOR: rgb(63,127,89)">' запрашиваем у пользователя число</span>
    Koef = InputBox(<span style="COLOR: rgb(42,0,255)">"Умножить на"</span>, <span style="COLOR: rgb(42,0,255)">"Домножение выделения"</span>)
    <span style="COLOR: rgb(63,127,89)">' если ничего не введено или нажата ОТМЕНА, выходим из процедуры</span>
    <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">If</span> Koef = <span style="COLOR: rgb(42,0,255)">""</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Then</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Exit</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Sub</span>

    <span style="COLOR: rgb(63,127,89)">' Помните о пользователе!</span>
    <span style="COLOR: rgb(63,127,89)">' Простейшей заменой решается проблема с десятичной точкой</span>
    <span style="COLOR: rgb(63,127,89)">' (в системе разделителем установлена запятая, если введена </span>
    <span style="COLOR: rgb(63,127,89)">' точка, здесь она заменяется на запятую)</span>
    Koef = Replace(Koef, <span style="COLOR: rgb(42,0,255)">"."</span>, <span style="COLOR: rgb(42,0,255)">","</span>)

    <span style="COLOR: rgb(63,127,89)">' опять перебираем выделенные ячейки</span>
    <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">For</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Each</span> cl In Selection
        <span style="COLOR: rgb(63,127,89)">' указываем объект, с которым будем работать</span>
        <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">With</span> cl
            <span style="COLOR: rgb(63,127,89)">' кучка возможно не нужных вам проверок и вычисление </span>
            <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">If</span> .Value &lt;&gt; <span style="COLOR: rgb(42,0,255)">""</span> And .Locked = <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">False</span> And _
                <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">CStr</span>(.Formula) = <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">CStr</span>(.Value) <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Then</span>
                .Value = Round((.Value * <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">CDbl</span>(Koef)) / 10) * 10
            <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">End</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">If</span>
        <span style="COLOR: rgb(63,127,89)">' заканчиваем работу с указанным объектом</span>
        <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">End</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">With</span>
    <span style="COLOR: rgb(63,127,89)">' закрываем цикл</span>
    <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Next</span>
<span style="COLOR: rgb(63,127,89)">' выходим из процедуры</span>
<span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">End</span> <span style="FONT-WEIGHT: bold; COLOR: rgb(127,0,85)">Sub</span>
</pre>
<p><strong>InputBox</strong> - обычное окошко для вводя текста пользователем. Функция возвращает пустую строку, если была нажата кнопка <strong>ОК</strong> при пустой строке ввода, или нажата <strong>Отмена</strong>.</p>
<p><strong>Replace</strong> заменяет в строке одну последовательность символов на другую. Здесь используется для того, чтобы пользователю не приходилось думать о раскладке. Неважно, что он напечатает - десятичную точку или запятую, вычисления пройдут без ошибки.</p>
<p>Далее уже знакомый перебор выделенных ячеек.</p>
<p>Для чего нужна конструкция <strong>With ... End With</strong>? Если в каком-то блоке кода вы активно работаете с одним объектом, есть смысл указать его после слова <strong>With</strong>, а дальше вместо <strong>Объект.Свойство</strong> писать просто <strong>.Свойство</strong>. Это делает код более читаемым, а также, насколько я знаю, несколько ускоряет исполнение.</p>
<p>Я специально оставил свои проверки свойств ячейки, для интереса. В одном из моих шаблонов лист организован таким образом, что я могу выделить несколько строк целиком и запустить эту процедуру. При этом пропускаются пустые ячейки (.Value &lt;&gt; ""), защищенные от изменений (.Locked = False), и содержащие формулы (CStr(.Formula) = CStr(.Value)). Все остальные изменяются.</p>
<p><strong>Round</strong> - округление. Поскольку округление происходит только до целых, приходится делить, а потом умножать на 10.</p>
<p>И еще две функции: <strong>CStr</strong> - конвертация в строку, в данном случае для корректного сравнения. <strong>CDbl</strong> - приведение к вещественному типу Double, вводит-то пользователь строку, а нам числа умножать надо. Впрочем, Visual Basic редко требует явное преобразование типов, справляется сам, но так - аккуратнее.</p>
<p>Специально не разбираю аргументы функций. Читайте документацию и экспериментируйте, это лучший способ понять.</p>
<p>Также читайте всю <a href="http://doitq.ru/stati/seriya-postov-po-vba/">серию постов по <b>VBA</b></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/06/24/vbaexcel2-domnozhaem-neskolko-yacheek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VBA.Excel: Замена формул значениями</title>
		<link>http://doitq.ru/2007/06/14/vbaexcel-zamena-formul-znacheniyami/</link>
		<comments>http://doitq.ru/2007/06/14/vbaexcel-zamena-formul-znacheniyami/#comments</comments>
		<pubDate>Thu, 14 Jun 2007 04:02:32 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Автоматизация]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/06/14/vbaexcel-zamena-formul-znacheniyami/</guid>
		<description><![CDATA[Пришла мысль выложить мои маленькие скрипты для Excel. Постараюсь идти от простого к сложному (ну... от маленького к большему) - вдруг кому изучить поможет. Впрочем, скриптов у меня мало.
Итак, в приложения Microsoft Office встроен язык Visual Basic for Application (VBA) - близнец обычного Visual Basic (по крайней мере до 6 версии VB включительно). Его можно [...]]]></description>
			<content:encoded><![CDATA[<p>Пришла мысль выложить мои маленькие скрипты для Excel. Постараюсь идти от простого к сложному (ну... от маленького к большему) - вдруг кому изучить поможет. Впрочем, скриптов у меня мало.</p>
<p>Итак, в приложения Microsoft Office встроен язык Visual Basic for Application (VBA) - близнец обычного Visual Basic (по крайней мере до 6 версии VB включительно). Его можно и нужно использовать для автоматизации рутинных операций. Все нижеизложенное относится к Excel 2003.</p>
<p>Вчитываться имеет смысл только если вы вообще представляете, что такое бейсик, иначе можно просто копировать текст скрипта.</p>
<p>Для начала скриптик, который меняет формулы в ячейках на вычисленные значения. На случай, если надо зафиксировать результат. Открывайте Excel, нажимайте Alt + F11 (или Сервис &gt; Макрос &gt; Редактор Visual Basic), создавайте новый модуль (Insert &gt; Module) и поехали. Впрочем, задержитесь на секунду и дайте модулю осмысленное имя, желательно латиницей. И еще, если открыта не одна книга, посмотрите, где вы создаете модуль. Слева торчит дерево проекта (если не торчит, View &gt; Project Explorer), там и выбирайте нужный. К сожалению, майкрософтовский офис не имеет общего хранилища для инструментов; скрипты обязательно привязываются к книге.</p>
<p>Теперь текст скрипта:</p>
<pre><span style="color: #3f7f59">' FormulaToValue</span>
<span style="color: #3f7f59">' преобразует формулу в значение в выделенных ячейках</span>

<span style="color: #3f7f59">' Объявляем процедуру</span>
<span style="font-weight: bold; color: #7f0055">Sub</span> FormulaToValue()
<span style="color: #3f7f59">' объявляем переменную cl, она будет иметь тип Range</span>
<span style="font-weight: bold; color: #7f0055">Dim</span> cl <span style="font-weight: bold; color: #7f0055">As</span> Range

<span style="color: #3f7f59">' перебираем все ячейки (автоматически записываемые в переменную cl)</span>
<span style="color: #3f7f59">' в выделеной пользователем части листа (Selection)</span>
<span style="color: #3f7f59">' для каждой из этих ячеек по отдельности выполняем инструкции в</span>
<span style="color: #3f7f59">' строчках между For... и Next</span>
<span style="font-weight: bold; color: #7f0055">For</span> <span style="font-weight: bold; color: #7f0055">Each</span> cl In Selection
<span style="color: #3f7f59">' присваиваем свойству значение (Value) каждой ячейки</span>
<span style="color: #3f7f59">' это же самое значение (смешно, да?)</span>
cl.Value = cl.Value
<span style="font-weight: bold; color: #7f0055">Next</span>
<span style="color: #3f7f59">' выходим из процедуры</span>
<span style="font-weight: bold; color: #7f0055">End</span> <span style="font-weight: bold; color: #7f0055">Sub</span></pre>
<p>По моему скромному, но верному мнению, комментариев достаточно. Кроме самой главной строчки.</p>
<pre>cl.Value = cl.Value</pre>
<p>Мы обращаемся к свойству Value объекта cl, а там лежит значение ячейки. Если ячейка вычисляемая, то все равно там содержится вычисленное значение, а формула - в свойстве Formula. Это же самое значение мы записываем обратно. При этом старое содержимое свойства Formula теряется, и ячейка сохраняет просто число (или текст, что там у вас было).</p>
<p>И о типе Range. Переменная такого типа является объектной, и может ссылаться на некоторый набор ячеек (или, в нашем случае, одну), которые и называется здесь объектом.</p>
<p>Запускать процедуру можно, выбирая ее в окошке макрос (Сервис &gt; Макрос &gt; Макросы... или Alt + F8). Там же можно задать горячую клавишу для каждой процедуры. А можно повесить макрос на созданную кнопку в панели инструментов. Перед запуском необходимо выделить ячейки, над которыми будет проводиться операция. Помните, что зажав Ctrl, можно выделять несмежные ячейки.</p>
<p>Также читайте всю <a href="http://doitq.ru/stati/seriya-postov-po-vba/">серию постов по <b>VBA</b></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/06/14/vbaexcel-zamena-formul-znacheniyami/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Исправления в Word: нужна помощь</title>
		<link>http://doitq.ru/2007/05/29/ispravleniya-v-word-nuzhna-pomosch/</link>
		<comments>http://doitq.ru/2007/05/29/ispravleniya-v-word-nuzhna-pomosch/#comments</comments>
		<pubDate>Tue, 29 May 2007 19:01:04 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/05/29/ispravleniya-v-word-nuzhna-pomosch/</guid>
		<description><![CDATA[Кто-нибудь из читателей разбирается в исправлениях при совместной работе в Word? Вот здесь мы зашли в тупик.
]]></description>
			<content:encoded><![CDATA[<p>Кто-нибудь из читателей разбирается в исправлениях при совместной работе в Word? Вот <a href="http://doitq.ru/2007/03/04/kak-postavit-udarenie-v-ms-word/#comments">здесь</a> мы зашли в тупик.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/05/29/ispravleniya-v-word-nuzhna-pomosch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Знаки подстановки в продуктах Microsoft</title>
		<link>http://doitq.ru/2007/03/29/znaki-podstanovki-v-produktah-microsoft/</link>
		<comments>http://doitq.ru/2007/03/29/znaki-podstanovki-v-produktah-microsoft/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 18:31:36 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Грабли и рукоятки]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/03/29/znaki-podstanovki-v-produktah-microsoft/</guid>
		<description><![CDATA[Что делать, если вам нужно найти на листе Excel звездочку или знак вопроса? Проблема в том, что они являются подстановочными знаками и выражение в строке Найти «*123?» означает «любое количество любых символов, потом 123, потом один какой-нибудь символ». Чтобы Excel не считал эти символы подстановочными, а искал как есть, их надо экранировать. У Microsoft свой [...]]]></description>
			<content:encoded><![CDATA[<p>Что делать, если вам нужно найти на листе Excel звездочку или знак вопроса? Проблема в том, что они являются подстановочными знаками и выражение в строке <strong>Найти</strong> «*123?» означает «любое количество любых символов, потом 123, потом один какой-нибудь символ». Чтобы Excel не считал эти символы подстановочными, а искал как есть, их надо экранировать. У Microsoft свой собственный путь, поэтому экранируются они с помощью тильды, то есть выражение «~?» означает знак вопроса сам по себе.</p>
<p>У Microsoft не один путь. Возьмите Word. Здесь обработка подстановочных знаков по умолчанию отключена, включить ее можно, нажав <strong>Больше</strong> и отметив галку <strong>Подстановочные знаки</strong> в диалоге поиска. А если вам нужно смешивать подстановку и знаки вопроса, то экранируются они обратным слешем, вот так: «\?». Предатели писали Word.</p>
<p>У Microsoft не один путь, а целый лабиринт (они патентуют результаты работы генератора случайных чисел, что ли?). В Visio наоборот, чтобы символ стал знаком подстановки, его надо экранировать так: «^?». Впрочем, они могут отмазаться тем, что не успели Visio переписать, продукт-то изначально не их.</p>
<p>Боюсь смотреть другие программы.<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/03/29/znaki-podstanovki-v-produktah-microsoft/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Стили в Word</title>
		<link>http://doitq.ru/2007/01/16/stili-v-word/</link>
		<comments>http://doitq.ru/2007/01/16/stili-v-word/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 09:28:00 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Грабли и рукоятки]]></category>

		<guid isPermaLink="false">http://doitq.ru/2007/01/16/stili-v-word/</guid>
		<description><![CDATA[Вы помните, что стили в MS Word (как минимум 2003) можно назначать выделенному тексту с помощью горячих клавиш? В боковой панели Стили и форматирование (Формат &#62; Стили и форматирование...) выберите в контекстном меню стиля пункт Изменить..., в появившемся окне Формат &#62; Сочетание клавиш... Разгуляева фантазии тут не выйдет: многие сочетания уже заняты, а собирать конструкции [...]]]></description>
			<content:encoded><![CDATA[<p>Вы помните, что стили в MS Word (как минимум 2003) можно назначать выделенному тексту с помощью горячих клавиш? В боковой панели <strong>Стили и форматирование</strong> (<strong>Формат</strong> &gt; <strong>Стили и форматирование...</strong>) выберите в контекстном меню стиля пункт <strong>Изменить...</strong>, в появившемся окне <strong>Формат</strong> &gt; <strong>Сочетание клавиш...</strong> Разгуляева фантазии тут не выйдет: многие сочетания уже заняты, а собирать конструкции типа Ctrl + Alt + Shift (это массаж для пальцев, не обращайте внимания) Word не позволяет.</p>
<p>И вы помните, что прежде, чем форматировать что-то напрямую, без применения стилей, надо шесть раз подумать, потом выйти на улицу и обежать вокруг фонарного столба, выкрикивая мантру «да, это действительно нужно»? Иначе щастя не будет.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2007/01/16/stili-v-word/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Округление в Excel</title>
		<link>http://doitq.ru/2006/09/06/okruglenie-v-excel/</link>
		<comments>http://doitq.ru/2006/09/06/okruglenie-v-excel/#comments</comments>
		<pubDate>Wed, 06 Sep 2006 06:12:00 +0000</pubDate>
		<dc:creator>Павел Рындин</dc:creator>
				<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Грабли и рукоятки]]></category>

		<guid isPermaLink="false">http://doitq.ru/2006/09/06/okruglenie-v-excel/</guid>
		<description><![CDATA[Вспомнилось, что были у меня запутки с округлением в Excel поначалу. Так что для только открывших двери в мир ячеек и формул это напоминание может быть полезным. Не путайте округление с отображением. Если посмотреть на вкладку Число окна Формат ячеек, можно заметить, что для числового формата задается произвольное количество десятичных знаков. Если установлен ноль, то [...]]]></description>
			<content:encoded><![CDATA[<p>Вспомнилось, что были у меня запутки с округлением в Excel поначалу. Так что для только открывших двери в мир ячеек и формул это напоминание может быть полезным. Не путайте округление с отображением. Если посмотреть на вкладку <strong>Число</strong> окна <strong>Формат ячеек</strong>, можно заметить, что для числового формата задается произвольное количество десятичных знаков. Если установлен ноль, то отображаться в ячейке будет число, округленное до целых, какая бы дробь там на самом деле не была. Но только отображаться! В дальнейшие расчеты пойдет число в первозданном виде, дробь - так дробь. И не удивляйтесь потом, если где-нибудь окажется, что 459 не равно 459. Потому что на самом деле это 458,93 и 459,2.</p>
<p>Отсюда вывод: всегда, когда речь идет о целых числах (или числах с заданной точностью) используйте округление. Это формула <strong>ОКРУГЛ</strong> в русской версии Excel. Она имеет два аргумента: само число, которое требуется округлить и число разрядов. С числом разрядов просто: 2 - до сотых, 1 - до десятых, 0 - до целых, -1 - до десятков и так далее в обе стороны. Единственное исключение из этого правила - промежуточные итоги, которые будут использоваться в дальнейших расчетах. Если округлять каждый результат в цепочке вычислений, может накопиться заметная ошибка, так что округляйте с умом.</p>
]]></content:encoded>
			<wfw:commentRss>http://doitq.ru/2006/09/06/okruglenie-v-excel/feed/</wfw:commentRss>
		<slash:comments>186</slash:comments>
		</item>
	</channel>
</rss>

