Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA (часть 2)

Автор: orkhanh
Дата сообщения: 20.11.2007 14:50
Расширенный фильтр у меня не получается.
Хочется чтобы фильтр был как в сводной таблице или в access
Автор: Tanya3000
Дата сообщения: 20.11.2007 21:24

Цитата:
Troitsky

Спасибо большое!!!!!

Добавлено:
Вроде решила, но что-то не знаю, как вывести помогите....
задание: Все элементы целочисленного вектора a размерности N, для которых справедливо условие ai=i, заменить нулем...

Sub main()
Dim N As Integer
N = InputBox("введите число элементов массива")
Dim a() As Integer
ReDim a(1 To N) As Integer
For i = 1 To N
a(i) = InputBox("Введите элемент№" & i)
Next i
For i = 1 To N
If a(i) = i Then a(i) = 0
Next
MsgBox ("Вектор= " a(i))
End Sub
Автор: CEMEH
Дата сообщения: 20.11.2007 21:36
orkhanh
Может я не совсем вник в задачу. А что если выделить диапазон, правой кнопкой клик, создать список, список с заголовками. И получим возможность фильтровать по всем столбцам. В первой строке таблицы ячейки с раскрывающимся списком возможных правил выбора.
Автор: SAS888
Дата сообщения: 21.11.2007 04:12
orkhanh
Так что, все-таки, нужно? Или это задача топика Excel FAQ?

Добавлено:
Tanya3000

Цитата:
не знаю, как вывести

Если нужно вывести все элементы массива в окно сообщений, то строку
Цитата:
MsgBox ("Вектор= " a(i))
нужно заменить, например:

Dim Msg As String
For i = 1 To N
Msg = Msg & "Вектор № " & i & Chr(61) & a(i) & vbCrLf
Next
MsgBox Msg
Автор: orkhanh
Дата сообщения: 21.11.2007 07:11
Как я могу прислать вам файл с фрагментом моей БД, чтобы вы все увидели.
Может быть на мэйл или подскажите как прикрепить сюда файл. Всем большое спасибо!
Автор: HoC
Дата сообщения: 21.11.2007 10:22
Как чайнику вычяслить время? К примеру часы работы..
1. Начало 10:15
2. Конец 23:04 или 03:06 на пример..
3. Результат = рабочее время * зарлота

Как это все зделать и так чтоб работало?
Автор: Vitus_Bering
Дата сообщения: 21.11.2007 10:51
orkhanh
Сюда выложи и дай ссылку здесь.
Автор: AndVGri
Дата сообщения: 21.11.2007 10:54
HoC
Это вопрос нужно задавать в Excel FAQ
Пусть в А1 время начала работы, в В1 время конца работы, в С1 часовая ставка тогда в D1 пишем формулу:

Код:
=24*(ЕСЛИ(B1<A1,1+B1-A1,B1-A1))*C1
Автор: SAS888
Дата сообщения: 21.11.2007 11:41
HoC
А если на VBA, то так, например:
Sub QQ()
Dim TimeBegin, TimeEnd, Tarif, Z_plata, WorkTime
'задаем:
TimeBegin = #10:15:00 AM# 'время начала рабочего дня
TimeEnd = #11:04:00 PM# 'время окончания
Tarif = 100 'рублей в час, например
'получаем:
V_min = Tarif / 60 'рублей в минуту
WorkTime = DateDiff("n", TimeBegin, TimeEnd) 'рабочее время в минутах
If WorkTime < 0 Then WorkTime = 1440 + WorkTime 'коррекция перехода через 0 часов
Z_plata = WorkTime * V_min
End Sub
Автор: orkhanh
Дата сообщения: 21.11.2007 13:11
Vitus_Bering

AndVGri

Вот мой файл.
Буду ждать ваших ответов.

http://slil.ru/25130685
Автор: maratino
Дата сообщения: 21.11.2007 13:46
SAS888
Низкий тебе поклон. Все получилось так, как надо.
Автор: kserg1983
Дата сообщения: 21.11.2007 14:07
Поскажите пож-ста каким образом можно на vba достать имя текущего пользователя windows. Заранее спасибо.
Автор: Vitus_Bering
Дата сообщения: 21.11.2007 14:40
kserg1983
Может быть тут помогут.
Автор: AndVGri
Дата сообщения: 21.11.2007 14:59
kserg1983

Код:
Dim sUserName As String
sUserName = vba.Environ$("USERNAME")
Автор: orkhanh
Дата сообщения: 21.11.2007 15:13
Vitus_Bering

AndVGri


Вот мой файл.
Буду ждать ваших ответов.

http://slil.ru/25130685
Автор: kserg1983
Дата сообщения: 21.11.2007 15:20
Vitus_Bering
спасибо большое.

Добавлено:
AndVGri

круто, это тоже работает, спасибо огромное.
Автор: Gavrik
Дата сообщения: 21.11.2007 17:04
Есть форма, на ней группа ComboBox с именами от "Продукция1" до "Продукция12".
Как их перебрать в цикле для того что бы применить к каждому метод .add ?


Код:
For Each x In НакладнаяРасходная.Controls
If x.Name Like "Продукция*" Then
x.Add "тест"
End If
Next
Автор: Terrainc
Дата сообщения: 21.11.2007 20:29
Подскажите как вставить объект Shape в определенную ячейку
или, как вариант, высчитать (в системе координат используемой в объектах Shape) координать верхнего левого угла определенной ячейки.
Автор: AndVGri
Дата сообщения: 22.11.2007 04:40
Gavrik
Почтеннейший, не x.Add, а x.AddItem "текст"

Terrainc
У каждой ячейки есть Left и Top. Допустим для активной

Код:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, ActiveCell.Left, ActiveCell.Top, _
ActiveCell.Width, ActiveCell.Height)
Автор: orkhanh
Дата сообщения: 22.11.2007 07:21
Кто может мне написть мне то что нужно, естественно не бесплатно.
Автор: Wukuze
Дата сообщения: 22.11.2007 14:56
Как мне задать правильный диапазон выделения
Я должен выделить диапазон значений от A5 до F i - Итого
Range("A5:Fi").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
вот код, с бейсиком не работал черт нает какой тут синтаксис - но бухгалтерия сказала надо!
как правильно написать чтоб он правильно значения выбирал... помогите пжалста, очень запарилсо
Автор: Ergistael
Дата сообщения: 22.11.2007 16:47
Думаю над задачкой, которую формализовал следующим образом:


На входе - формула, содержимое какой-то ячейки (в виде ActiveCell.Formula или как переменная типа string). На выходе нужно получить массив переменных типа range, содержащих каждый из диапазонов, указанных в исходной формуле.

Попытка решить "в лоб": InfluencingRange = CStr(ActiveCell.DirectPrecedents.Address) и довольно простой разбор строки на перечисленные через запятую диапазоны.

Проблема: формула "=СУММ(A1:C3)/B2" выдаст только один диапазон (A1:C3), но не B2, т.к. B2 полностью входит в (A1:C3).

Очень не хочется переходить к посимвольному анализу строки...
Автор: Gavrik
Дата сообщения: 22.11.2007 19:49
AndVGri

Спасибо.
Автор: Tanya3000
Дата сообщения: 22.11.2007 21:08
SAS888
Что бы я без вас делала, вы прям меня спасаете.......
Автор: SAS888
Дата сообщения: 23.11.2007 04:05
Wukuze
Думаю, имелось ввиду следующее:
Range(Range("A5"), Range("F" & i)).Select
With Selection
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
End With
Автор: Wukuze
Дата сообщения: 23.11.2007 06:54
SAS888
Спасибо большое -прям вчера убилсо, Range(Range("A5"), Range("F" & i)).Select - помогло... с меня пиво ежели в реале встретимсо)))
Автор: Dim75
Дата сообщения: 23.11.2007 08:31
Плиз, помогите сделать следующую вещь -

На файл Excel нужно наложить защиту:
1. Вводить пароль для дальнейшего отображения листов файла, при неправильном вводе или при не включенных макросах закрывать книгу.
2. Установить определенную дату, после которой даже при правильном пароле листы не отображались или же файл не сохранялся через сохранить, сохранить как..

сам макросы пишу только простые через запись, но вот хочется такое решение, а не получается

заранее благодарю
Автор: Wukuze
Дата сообщения: 23.11.2007 09:20
Прошу помощи люди, сил нет - бухгалтеры не только винды рушот но есче и думают что раз один раз помог мона на шею сесть, а начальника сказал - надо!
Надо чтоб макрос окрывал файл в папкеформировал то что ему надо, закрывал файл и брался за следующий, и так пока в папке эти файлы есть
вайлов много, но имя файла численное 1 - и где то за пару тыщ
Workbooks.Open Filename:= _
"C:\*****work\1.xml"
тут бы проводились нужные мне действия
ActiveWindow.Close
зациклить вот это бы как то чтоб потом он следующий файл выбирал и снова эти действия выполнял, можно конечто ду антил луп но тогда как указать переменную в имени файла который надо открыть?
Автор: SAS888
Дата сообщения: 23.11.2007 10:01
Dim75
Вставь в модуль "Эта книга" следующий код:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Passw As String, x As String
Passw = "12345" 'пусть это пароль
If ActiveSheet.Index > 2 Then 'если № листа >2, например
If Date > #12/31/2007# Then 'дата окончания действия пароля
Sheets(1).Select
Exit Sub
End If
x = InputBox("Введите пароль")
If x <> Passw Then
MsgBox "Пароль неверный"
Sheets(1).Select
ThisWorkbook.Close savechanges:=False
End If
End If
End Sub
Нужно, конечно и проект защитить паролем.
Автор: AndVGri
Дата сообщения: 23.11.2007 10:06
Ergistael
Вот так попробуй (для активной ячейки с формулой =СУММ(A3:A5)+E3*G5)

Код:
Public Sub test()
Dim p As Range
For Each p In ActiveCell.Precedents.Areas
Debug.Print p.Address
Next p
End Sub

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.