среда, 9 августа 2017 г.

Debug.Print в MS Excel

В в VBE MS Excel вместо окна с сообщением можно использовать Debug.Print, результат после запуска макроса будет отображаться в VBE в специальном окне Immediate, которое можно вызвать горячей клавишей Ctrl+G, либо через меню View - Immediate Window. Удобно использовать для тестирования на промежуточные значения в вычислениях.

 

Макрос в MS Excel для вычисления минут

Рассмотрим создание макроса для MS Excel на VBA. Достаточно запустить готовый файл temp.xls и включить поддержку макросов, либо прописать рассмотренный ниже код в другом документе Excel. При этом этот документ должен быть запущен для использования процедур, содержащихся в нем.

В temp.xls уже содержатся две процедуры для использования. Скачать тут.

Sub MinuteToB -  Выделяем колонку "С", при этом в колонку "В" будут внесены данные в формате (00-хх), где хх - это минуты.

Sub DifMinToC - Выделяем колонку "В", при этом в колонку "С" будут внесена разница в минутах. Например, в "В" = (10-80), тогда в "С" = 70.
Sub MinuteToB()
'номер первой выделенной ячейки
Dim MyFirstRow As Long

With ActiveSheet
Set cur_range = Selection
cur_range.Activate
' Debug.Print cur_range.Address
' Debug.Print Selection.Row
MyFirstRow = Selection.Row
'уменьшаем на единицу, потому что будем прибавлять каждый раз с первой ячейки из скопированного диапазона
MyFirstRow = MyFirstRow - 1
For x = 1 To cur_range.Rows.Count
If Len(cur_range(x, 1)) > 1 Then
ActiveWorkbook.ActiveSheet.Range("B" & CStr(MyFirstRow + x)).Value = "(00-" & cur_range(x, 1) & ")"
Else
ActiveWorkbook.ActiveSheet.Range("B" & CStr(MyFirstRow + x)).Value = "(00-0" & cur_range(x, 1) & ")"
End If
Next x
End With


End Sub



Sub DifMinToC()

'номер первой выделенной ячейки
Dim MyFirstRow As Long
With ActiveSheet
Set cur_range = Selection
cur_range.Activate
' Debug.Print cur_range.Address
' Debug.Print Selection.Row
MyFirstRow = Selection.Row
'уменьшаем на единицу, потому что будем прибавлять каждый раз с первой ячейки из скопированного диапазона
MyFirstRow = MyFirstRow - 1
For x = 1 To cur_range.Rows.Count
ActiveWorkbook.ActiveSheet.Range("C" & CStr(MyFirstRow + x)).Value = Dif(CStr(cur_range(x, 1)))
Next x
End With

End Sub



'вычисляем в ней разницу минут из выражения, например, (20-100)
Function Dif(text As String) As String
Dim sym As Long
'первое число
Dim First As String
'второе число
Dim Temp As String
'будет True когда нашли первое число
Dim Flag As Boolean

Flag = False
First = ""

For sym = 1 To Len(text)
'если текущий символ цифра
If InStr(1, "0123456789", Mid$(text, sym, 1), 1) <> 0 Then
Temp = Temp & Mid$(text, sym, 1)
Else
'для первого числа
If (Temp <> "") And (Flag = False) Then
Flag = True
First = Temp
Temp = ""
End If
End If
Next sym
'второе число осталось после в Temp

Dif = CStr(CInt(Temp) - CInt(First))

End Function




 

 

 

воскресенье, 29 марта 2015 г.

Notepad++ неправильно считает количество символов?

Установил Notepad++ настройки по умолчанию. Подключил некоторые плагины. Но удивило, когда внизу в статистике в поле length значение отличалось от того, что подсчитано в Word и очень даже на много символов.
Что это? Неправильные настройки? Подсчитывается что-то еще дополнительно?

воскресенье, 22 марта 2015 г.

Много проводов и фильтров. Трудно найти нужный?

К сетевым фильтрам подключено много разных проводов? И порой трудно определить что к чему? Зачем постоянно тратить время и распутывать их, чтобы не отсоединить случайно что-то не то? 
Надо просто взять бумажку, написать название к чему он и закрепить как бирку вокруг провода с помощью скотча, чтобы название было видно. Казалось бы, ничего сложного и экономит впоследствии много времени, но не всегда мы это делаем.

понедельник, 22 сентября 2014 г.

Где найти подставку для рук для клавиатуры?

Искал в магазинах, смотрел на сайтах, но не удавалось найти отдельно продающихся подставок для рук под клавиатуру. В целом, находились варианты гелевой подставки, но ширина как-то не очень и материал не понравился. Что же, если не удается найти то, что хочется, то будем делать. Что же нужно для удобства? Для начала выяснить размеры подставки. Прикинув на глазок, 8 сантиметров -  для меня оказались нормальными для длины подставки. По высоте подставка должна быть чуть выше уровня клавиш, визуально где-то меньше сантиметра. Есть еще нюанс стыка подставки и клавиатуры. Там у нас располагается клавиша пробела и другие клавиши. Если высота подставки в этом месте будет одинаковой, то трудно будет нажимать на эти клавиши. Значит должно быть углубление при стыке, и стык должен быть ровно к клавиатуре или даже чуть ниже, а отступ, например, сделать два сантиметра. Итак, как это сделать. Можно сразу подготовить такую доски цельные, отшифовать, сделать необходимые углубления или же создать из двух досок разной длины, склеить их клеем. Обклеивать скотчем или покрывать каким-то покрытием - не захотелось. Как выяснилось, рука теряет подвижность при этом и начинает прилипать к данной поверхности, а это усложняет набор. Поэтому простое отшлифованное деревянное покрытие наиболее оказалось оптимальным. Для того чтобы подставка не отходила от клавиатуры просто соединяем скотчем.
Довольно простое устройство, но делает намного удобнее набор, позволяет рукам не уставать. В общем. хорошая ниша для рынка, но непонятно, почему же подставки для рук не производят создатели клавиатур?

Перемотка в плеере на 1 секунду

В настройках плееров не всегда стоит нужно значение для перемотки. Я обычно ставлю перемотку на 1 секунду.

JetAudio


С правой стороны выбираем пункт Move и выставляем значение "1".

KMPlayer



В меню Конфигурации устанавливаем в (L/R) параметр "1". Снимаем все галочки, которые есть ниже.


Для других плееров можно найти в их справке.