Чат kullun
kullun (off) Хозяин
7 июня 2018, 00:41
Private Function FileName0nly2(pname) As String
FileName0nly2 = Dir(pname)
End Function
-----
kullun (off) Хозяин
7 июня 2018, 00:40
Private Function FileNameOnly(pname) As String
' Возвращает имя файла из строки путь/имя файла
Dim temp As Variant
length = Len(pname)
temp = Split(pname, Application.PathSeparator)
FileNameOnly = temp(UBound(temp))
End Function
Функция использует функцию VBA S p lit, которая принимает строку (вместе с сим-
волами-разделителями) и возвращает массив типа varian t, содержащий элементы, ко-
торые находятся между символами-разделителями. В рассматриваемом случае перемен-
ной temp присваивается массив, содержащий текстовые строки между Application.PathSeparator>>>>"/" (обычно в качестве разделителя используется обратная косая черта)
-----
kullun (off) Хозяин
7 июня 2018, 00:37
Функция File Exists
Данная функция принимает один аргумент (путь и имя файла) и возвращает ИСТИНА,
если файл существует.
Private Function FileExists(fname) As Boolean
' Возвращает ИСТИНА, если файл существует
FileExists = (Dir(fname) <> ”")
End Function
-----
kullun (off) Хозяин
7 июня 2018, 00:35
Обработка последовательности файлов
Sub BatchProcess()
Dim FileSpec As String
Dim i As Integer
Dim FileName As String
Dim FileListO As String
Dim FoundFiles As Integer
’ Определение пути и сведений о файле
FileSpec = ThisWorkbook.Path & "\" & "text??.txt"
FileName = Dir(FileSpec)
' Найден ли файл?
If FileName <> ”" Then
FoundFiles = 1
ReDim Preserve FileList(l To FoundFiles)
FileList(FoundFiles) = FileName
Else
MsgBox "He найдены требуемые файлы " & FileSpec
Exit Sub
End If
' Получение других имен файлов
Do
FileName = Dir
If FileName = "" Then Exit Do
FoundFiles = FoundFiles + 1
ReDim Preserve FileList(l To FoundFiles)
FileList(FoundFiles) = FileName & "*"
Loop
' Просмотр и обработка файлов
For i = 1 То FoundFiles
Call ProcessFiles(FileList( i ))
Next i
End Sub
Sub ProcessFiles(FileName As String)
' Импорт файла
Workbooks.OpenText FileName:=FileName, _
Origin:=xlWindows, _
StartRow:=l, _
DataType:=xlFixedWidth, _
FieldInfo:= _
Array(Array(0, 1), Array(3, 1), Array(12, 1))
' Ввод формул суммирования
Range("D1M).Value = "A"
Range("D2").Value = "B"
Range("D3").Value = HCM
Range("El:E3").Formula = M=COUNTIF(В: B,D1)"
Range("FI:F3").Formula = "=SUMIF(В:B,D1,С:C)"
End Sub
-----
kullun (off) Хозяин
7 июня 2018, 00:15
Сортировка массива
Сортировка на рабочем листе. Массив переносится на рабочий лист Excel; диапа-
зон на рабочем листе сортируется и переносится обратно в массив. Единственным
аргументом этой процедуры является массив.
Пузырьковый метод. Довольно простой прием сортировки (он использовался в при-
мере сортировки листов в главе 9). Его несложно запрограммировать, однако такой
алгоритм сортировки не самый эффективный, особенно для большого количества
элементов в массиве.
Быстрая сортировка. Намного более быстрая процедура, чем пузырьковый алго-
ритм, но, чтобы в ней разобраться, потребуется время. Работает исключительно
с типами данных Integer и Long.
Метод пересчета. Работает очень быстро, однако для его улучшения также потре-
буются время и определенные усилия. Как и быстрая сортировка, работает с типами
данных Integer и Long.
Алгоритм сортировки на рабочем листе поразительно быстрый, принимая во внима-
ние то, что массив переносится на лист, сортируется, а затем результаты сортировки пере-
носятся обратно в массив.
-----
kullun (off) Хозяин
7 июня 2018, 00:05
Отображение списка шрифтов
Sub ShowInstalledFonts()
Dim FontList As CommandBarControl
Dim TempBar As CommandBar
Dim i As Long
' CommandBar
Set TempBar = Application.CommandBars.Add
Set FontList = TempBar.Controls.Add(ID:=1728)
'
'Sheets("3").Range(":").ClearContents
For i = 0 To FontList.ListCount - 1
Cells(i + 1, 1) = FontList.List(i + 1)
Next i
' CommandBar
TempBar.Delete
End Sub
-----
kullun (off) Хозяин
6 июня 2018, 23:24
для отображения заголовков строк и столбцов на рабочем листе примените сле-
дующую команду.
ActiveWindow. DisplayHeadmgs = Not _
ActiveWindow.DisplayHeadings
Для отображения линий сетки на активном листе воспользуйтесь следующим кодом.
ActiveWindow.DisplayGridlines = Not _
ActiveWindow.DisplayGridlines
-----
kullun (off) Хозяин
6 июня 2018, 23:24
Sub ToggleWrapText ()
' Управляет переносом слов в выделенных ячейках
If TypeName(Selection) = "Range" Then
Selection.WrapText = Not ActiveCell.WrapText
End If
End Sub
Обратите внимание на то, что за основу взята активная ячейка. Когда диапазон выде-
лен и значения свойств в разных ячейках неодинаковы (например, в одних ячейках шрифт
полужирный, а в других — нет), то диапазон считается смешанным, и Excel использует
в качестве базового значение свойства активной ячейки. Если, например, активная ячей-
ка имеет полужирный шрифт, то начертание текста в выделенных ячейках после щелчка
на кнопке Полужирный панели инструментов будет обычным. Эта простая процедура
имитирует поведение элемента интерфейса Excel.
Оператор Not можно использовать для переключения значений многих свойств.
-----
kullun (off) Хозяин
6 июня 2018, 23:17
ActiveWindow.ScrollRow = TopRow
ActiveWindow.ScrollColumn = LeftCol
-----
kullun (off) Хозяин
6 июня 2018, 23:15
Sub Test1()
MsgBox ActiveWindow.ScrollRow 'самая вверхняя строка в окне
MsgBox ActiveWindow.ScrollColumn 'самая левая колонка в окне
MsgBox ActiveWindow.RangeSelection.Address 'адрес выделенного диапазона в текущем окне
End Sub
-----
стр. Пред. 1,2,3 ... 5,6,7 ... 12,13,14 След.
0.032 сек
SQL: 3