Изменение значений ячеек Excel с помощью макросов VBA — часть 2

Еще несколько полезных скриптов VBA для Excel. Для вставки в код макроса не забудьте изменить название листа и диапазон ячеек на свой.

Убрать всё после любого символа (в примере после знака ‘+’). Обратите внимание, если вы хотите поменять символ, необходимо сделать это в двух строках — во 2-ой и 3-ей. Вторая строка была добавлена для того, чтобы не было ошибок в случае отсутствия искомого символа:

For Each c In Worksheets("list1").Range("B2:B72").Cells
  c.Value = CStr(c.Value) + "+"
  spacePos = InStr(1, c.Value, "+")
  artLen = spacePos - 1
  c.Value = Left(c.Value, artLen)
Next

Сделать все первые буквы в ячейках прописными:

For Each c In Worksheets("list1").Range("F2:F72").Cells
  c.Value = UCase(Mid(c.Value, 1, 1)) + Mid(c.Value, 2)
Next

Добавить плюс перед ‘7’ (может пригодится при редактировании списка номеров телефонов):

For Each c In Worksheets("list1").Range("F2:F72").Cells
  if Mid(c.Value, 1, 1) = "7" then
    c.Value = "+" + CStr(c.Value)
  endif
Next

Если здесь нет нужного вам макроса, посмотрите ещё часть 1.

Изменение значений ячеек Excel с помощью макросов VBA

Небольшая памятка по работе с макросами VBA Excel. Для вставки в код, измените название листа и диапазон ячеек на свой.

Добавить текст к значениям (в данном случае добавить слово «add» в начале ячеек):

For Each c In Worksheets("list1").Range("F7:F44").Cells 
  c.Value = "add" + CStr(c.Value)
Next

Добавить к значениям текст из соседней ячейки справа:

For Each c In Worksheets("list1").Range("F7:F44").Cells
  c.Value = CStr(c.Value) + " " + c.Cells(1, 2).Value
Next

Вывести строку обрезанную до 6 символов:

For Each c In Worksheets("list1").Range("J3:J175").Cells
  c.Value = Left(c.Value, 6)
Next

Убрать все после первого пробела:

For Each c In Worksheets("list1").Range("J3:J175").Cells
  c.Value = CStr(c.Value) + " "
  spacePos = inStr(1, c.Value, " ")
  artLen = spacePos - 1
  c.Value = Left(c.Value, artLen)
Next

Убрать все до первого пробела, затем убрать пробелы в начале строки:

For Each c In Worksheets("list1").Range("D2:D79").Cells
  spacePos = InStr(1, c.Value, " ")
  c.Value = Mid(c.Value, spacePos)
  c.Value = LTrim(c.Value)
Next

Если здесь нет нужного вам макроса, посмотрите ещё часть 2.

Стрелочные часы на javascript (с помощью спрайтов)

Часы на сайт — один из скриптов, который может показаться бесполезным, так как у всех есть системные часы. Однако некоторые хотят поставить такие часы как элемент дизайна. Но эффект эксклюзивности будет достигнут, только если эти часы будут уникальными, сделанными в цветовой гамме и стиле сайта. Поэтому копировать готовые часы у кого-то чаще всего будет неуместно, лучше сделать свои. Способов довольно много:

  1. Можно сделать часы во flash, но не у всех есть среда разработки flash (вариант использования не лицензионной программы не рассматриваем).
  2. А можно сделать с помощью javascript. Правда если речь идет о стрелочных часах, то стрелки часто делаются с помощью рисования линий или точек, что не всегда красиво.
  3. Есть еще SVG — на мой взгляд за этим форматом будущее. К сожалению c кроссбраузерностью этого решения пока не все гладко.
  4. Ну и еще вариант — использовать javascript и стрелки отображаемые с помощью спрайтов. Его и рассмотрим. Способ тоже не без минусов — получается довольно большой объем файлов стрелок (3 стрелки в приведенном ниже примере занимают чуть больше 100 кбайт). Хорошо что интернет сейчас быстрый у многих 🙂 Результат изображен ниже.


Используется 5 графических элементов. Фон, логотип для часов, и 3 стрелки. Другими словами, можно легко сделать любой внешний вид стрелок и фона, используя лишь графический редактор.
Исходники примера можно скачать здесь.
С изменением фона и логотипа все просто, а как быстро и без рутины подготовить спрайты для своих уникальных стрелок, можно прочитать в посте про клонирование объектов в векторном редакторе. Впрочем, подсказка есть в исходниках — там можно заметить два файла SVG — один с одиночными стрелками, другой с клонированными (наклон с шагом 6 градусов). Для создания стрелок использовал векторный редактор Inkscape 0.48.

Hello world в jQuery AJAX

Начать использовать jQuery очень просто, а вместе с ним и AJAX, который также становится очень простым в этой связке. Смотрите пример ниже. Для простоты библиотека jQuery берется с сайта googleapis.com, но вы можете разместить ее и локально. Обратите внимание, что все файлы должны быть в кодировке UTF-8.

Итак, листинг ajax.html (это файл, который необходимо вызвать в браузере):

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; Charset=UTF-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
</head>
<body>
  <div id="content"></div>
  <input id="show_btn" type="button" value="Показать"/>
  <input id="close_btn" type="button" value="Закрыть"/>
  <input id="pos_id" type="hidden" value="5"/>
  <script src="ajax.js" type="text/javascript"></script>
</body>
</html>

Далее листинг ajax.js:

$(document).ready(function(){ 
  $('#show_btn').click(function(){ 
    $.ajax({ 
      url: 'ajax_servlet.php', 
      data: 'id='+$('#pos_id').val(), 
      cache: false, 
      success: function(html){ 
        $('#content').html(html); 
      } 
    }); 
  }); 
  $('#close_btn').click(function(){ 
    $('#content').html(''); 
  });
});

Ну и наконец файл, отвечающий на AJAX-запрос на стороне сервера, ajax_servlet.php:

<?php
echo
  "Привет мир!<br/>".
  "Скрытый параметр id=".$_GET['id']
;
?>

Средствами PHP посмотреть адрес страницы созданный sh404SEF

Чтобы узнать адрес страницы, который, к примеру сгенирировал sh404SEF, воспользуйтесь переменной $_SERVER[‘REDIRECT_URL’].
А не-SEF ссылка содержится в более часто упоминаемой переменной $_SERVER[‘REQUEST_URI’].