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

» Excel VBA (часть 2)

Автор: SAS888
Дата сообщения: 10.03.2009 04:46
orange2009

Цитата:
перед первым значением появляется ";", это можно исправить?

Можно.

Код: Sub Main()

Dim i As Long, k As String
k = "образованием земельного участка путем объединения земельных участков с кадастровыми номерами "
With Sheets("Заказчик")
For i = 9 To .Cells(Rows.Count, "I").End(xlUp).Row
If .Cells(i, "I") <> "" Then k = k & .Cells(i, "I") & " ; "
Next
End With
Sheets("Титульный").[A10] = Left(k, Len(k) - 3)

End Sub
Автор: dimmer123
Дата сообщения: 10.03.2009 12:46
CEMEH большое спасибо
Автор: orange2009
Дата сообщения: 10.03.2009 13:11
SAS888
спасибо большое, работает. Мне осталось еще 8 радиокнопок сделать в форме.
Автор: dummy84
Дата сообщения: 11.03.2009 09:44
добрый день, подскажите пожалуйста как можно осуществить выбор например одной из двадцати таблиц на листе елси выбор зависит от приблизительно 5 факторов?
Автор: SAS888
Дата сообщения: 11.03.2009 10:47
Ответ в Вашем вопросе. Просматриваем лист, проверяем все критерии и выбираем.
Для более полного ответа, прикрепите файл и подробно опишите, как нужно выбирать. И что значит "выбрать"? Определить диапазон? Или что?
Автор: dummy84
Дата сообщения: 11.03.2009 11:47
смотрите есть таблицы которые содержат тарифы на страхование путешествующих, я хочу сделать что то типа простого калькулятора где можно ввести страну, кол-во днейй прогрму страхования и получить тариф а не копаться в бумаге или листах. Вообщем есть множество тарифных сеток, выбор тарифной сетки зависит:
1) от того многоразовая виза или одноразовая
2) от страны (тут идет выбор Европа, Азия, СНГ, Другой мир)
3) програмы покрытия а б с д
4) страховой сумы

соответственно необходимо определить диапазон(тарифную сетку) где данный тариф содержиться, а там уже по количеству дней ВПРом тариф можно подтянуть из заданой таблицы(сетки)

и еще извените, но не знаю как прикрепить файл..
Автор: ghosty
Дата сообщения: 11.03.2009 12:13
Помогите, пожалуйста, найти, что не так в этом макросе:

Код: Range("A2:B42").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("Range!$A$2:$B$42")
ActiveChart.ChartType = xlColumnClustered
ActiveChart.ChartArea.Select
Selection.Cut
Range("L3").Select
ActiveSheet.Paste
Автор: SAS888
Дата сообщения: 11.03.2009 12:19
Так Вы как раз и написали алгоритм Вашей задачи. Вопрос-то в чем? Как сделать? Тут без примера исходного файла конкретно никто не ответит. Я бы, например, создал форму, после заполнения которой, жмем кнопку, и получаем то, что требовалось.
P.S. Залейте Ваш (лучше архивный) файл на любой файлообменник (например, Этот), и дайте ссылку.
Автор: dummy84
Дата сообщения: 11.03.2009 12:35
http://slil.ru/27041507 тут лежит, я просто слабо еще разбираюсь, мне хочеться понять принцып если можно дайте пример какой то такой формы, чтобы можно было посмотреть как она создается, а я уже буду что то фантазировать, спасибо!
Автор: ghosty
Дата сообщения: 11.03.2009 12:43
Так, я нашел, как двигать графики
http://peltiertech.com/Excel/ChartsHowTo/ResizeAndMoveAChart.html
Автор: SAS888
Дата сообщения: 11.03.2009 13:37
dummy84
Посмотрел Ваш файл. Теперь скажите, какие параметры нужно вводить (и где их потом искать) и что в результате нужно получить (и куда девать результат).
Автор: dummy84
Дата сообщения: 11.03.2009 14:15
врезультате нужно получить тариф который берется из одной из таблиц в зависимости от того куда, по какой визе по какой программе чиловек хочет ехать и этот тариф необходимо умножить на поправочные коэфициенты за возраст и т.д., тоесть самое сложное это найти необходимый тариф в тарифных сетках
Автор: ghosty
Дата сообщения: 11.03.2009 16:10
Напомните, пожалуйста, что нужно писать перед кодом, чтобы он выполнялся без обновления экрана (чтобы я не видел, что происходит при выполнении).
Заранее премного благодарен.
Автор: dummy84
Дата сообщения: 11.03.2009 17:26
Application.ScreenUpdating = False
Автор: WowGun
Дата сообщения: 11.03.2009 17:26
ghosty

Application.ScreenUpdating = False
Автор: SERGE_BLIZNUK
Дата сообщения: 11.03.2009 19:35
dummy84
WowGun
Классно! Посмотрите на время своих постов - Вы запостили одновременно!
Автор: dummy84
Дата сообщения: 11.03.2009 22:32
SERGE_BLIZNUK
да забавно получилось, а по другому никак и не могло, ведь не стали бы мы друг друга дублировать. Кстати я года полтора назад был на форуме и Вы тут были, респект!
Автор: zphoenix
Дата сообщения: 12.03.2009 00:53
Ребята помогите пожалуйста решить какую-либо из этих задач, буду очень благодарен
Задача 1-2
Задача 3-4
Автор: SAS888
Дата сообщения: 12.03.2009 06:20
dummy84

Цитата:
врезультате нужно получить тариф который берется из одной из таблиц в зависимости...

Вот я и спрашиваю, какие (конкретно) данные должны вноситься в форму.
Цитата:
куда, по какой визе по какой программе
Что такое "виза", "программа" и т.д. мне все равно. Меня интересуют имена листов, заголовки таблиц, адреса ячеек и т.п.
Например, "куда" это что? "по какой визе" - это что? и т.д. Как я могу осуществлять поиск, если не знаю что искать? Не экономьте слова. Опишите подробно. Где что расположено?
Автор: Smog
Дата сообщения: 12.03.2009 06:44

Цитата:
Ребята помогите пожалуйста решить какую-либо из этих задач, буду очень благодарен
Задача 1-2
Задача 3-4

сделайте за меня ты хотел сказать?
нехорошо.
Автор: intel1
Дата сообщения: 12.03.2009 08:52
Здравствуйте. Такая проблемка. Как можно изменить структуру книги excel. Тоесть превратить

Наименование     Ост.    Цена    Заказ    Сумма    Описание
DVD-плеер / рекордеры                    
DVD караоке плееры                    
Hyundai H-DVD5070 DVD-плейер MPEG4, караоке 2000 песен, USB    4    3 180,00            
DVD плееры                    
BBK DV115SI DVD-плейер    22    1 553,00            
BBK DV310SI DVD-плейер    8     1 642,00            
BBK DV312SI DVD-плейер    5     1 642,00            
BBK DV318SI DVD-плейер    4     1 697,00            
BBK DV319SI DVD-плейер    3     1 697,00            
BBK DV615SI DVD-плейер    3    
в

Артикул    Наименование (Eng)    Наименование (Русский)    ID страницы Цена    Скрытый    Можно купить    Старая цена    На складе    Продано    
        Малые бытовые приборы    melkaja-bytovaja-tehnika                            
        !Чайник    chajnik                            
        Термопот Binatone TP 3050    termopot-binatone-tp-3050    2330        1    0    0    0    
        Термопот Binatone TP 4050    termopot-binatone-tp-4050    2280        1    0    10    0    
        Чайник Binatone CEJ-1012    chajnik-binatone-cej-1012    985        1    0    30    0    
        Чайник Binatone CEJ-1742    chajnik-binatone-cej-1742    930        1    0    26    0    
        Чайник Binatone CEJ-1743    chajnik-binatone-cej-1743    930        1    0    20    0    
        Чайник Binatone CEJ-3300    chajnik-binatone-cej-3300    1180        1    0    54    0    
        Чайник Binatone GK-1231    chajnik-binatone-gk-1231    1900        1    0    5    1    
Автор: Les1at
Дата сообщения: 12.03.2009 12:29
Кто умеет работать с автофильтром, подскажите:
есть таблица, включён автофильтр, как узнать, какое количество вариантов есть в field1?, т.е. сколько он предложит в выпадающем меню вариантов?

Заранее спасибо!
Автор: dummy84
Дата сообщения: 15.03.2009 13:29
SAS888

то что я хочу сделать в форме, буквально вчера сделал в екселе без формы посмотреть можно тут http://slil.ru/27240329 Но уж больно хочеться создать нормальную пользовательскую форму. Алгоритм следующий есть 3 блока влияющих на тариф 1) медицинские затраты 2) несчастные случаи 3) ответственость. Каждый из них считается по разному и самым тяжелым есть расчет тарифа по медицинским затратам: сначала в этом файле вводится возвраст и т.д. ячейки b5:b8 что соответственно влияет на поправочніе коеф. которые отображаются в ячейках h15:h20 (откуда беруться можно проследить по ВПР) далее указываеться тип визы разовая или многоразовая это соответственно влияет на то из какой области будет подтягиваться тариф либо из h65:ay120 либо из ba66:cs88, а то какой тариф будет подтянут зависит от срока поездки допустим столбец h(для разовой визы) и програмы покрытия строка 66 и сумы покрытия строка 68. когда тариф будет подтянут его нужно умножить на поправочные коеф из блока h15:h20 и на курс доллара или евро.

это конечно я не все обьяснил, но мне главное понять как эта форма создается и хотя бы минимальный пример, можно на основе моего файла, а дальше уже буду додумывыть, просто главное понять суть так как далее мне предстоит создание не одной формы...

спасибо.
Автор: MaximuS G
Дата сообщения: 16.03.2009 15:27
Привет всем!
Помогите разобраться с кодом, то-есть с его частью. Вообщем макрос сохраняет резервную копию активной книги, при этом сохраняет сразу в архиве... не могу понять как. Вот код:

Код:
Set wb = ActiveWorkbook
wbName = wb.Name
Yesterday = Format(CStr(Date - 1), "yyyy/mm/dd")
iPath$ = "C:\"
iFileName$ = Left(wbName, Len(wbName) - 4) + "_" + Yesterday + ".xls"
iFileNameRar$ = iPath$ + Left(iFileName$, Len(iFileName$) - 3) + "rar"
wb.SaveCopyAs (iPath$ + iFileName$)
iFileName$ = iPath$ + iFileName$
WinRarApp$ = "C:\Program Files\WinRAR\WinRAR.exe a -ep -df "
' - ep (исключить пути из имен) -df (удалить файлы после архивации)
adr = WinRarApp$ & " """ & iFileNameRar$ & """ """ & iFileName$ & """ "
RetVal = Shell(adr, vbHide)
Автор: SERGE_BLIZNUK
Дата сообщения: 16.03.2009 22:52
MaximuS G
макрос сначала сохраняет файл XLS на диск C:\
потом формирует командную строчку для архиватора WinRar
(причём в опциях архиватора задаётся удалить исходные файлы, после успешной архивации).
а потом вызывается WinRar (выполняется сформированная команда через Shell(adr, vbHide) )
Автор: Solenaja
Дата сообщения: 17.03.2009 10:32
SAS888 уже мне помогал, но задача немного изменилась.
в принципе все тоже самое, только другие условия вычисления, стандартными функциями не знаю как проверить каждую ячейку на кол-во повторений чисел в массиве...

Период 20 недель, т.е. 20 столбцов, т.е. 20 чисел в строке (если числа нет в ячейке или отрицательное значение, принимаем для расчета значение в ячейке = 0). Вычисления производятся для всех строк, в данном случае для 13-48 строк
- найти максимальное в массиве C13:V13 (max1)
- найти max_temp=max1 * 0.8
- сравнить max_temp со всеми значениями в массиве и найти все, что больше либо равны max_temp:
-- если таких значений 2 и больше - принять второе максимальное из массива C13:V13, т.е. max2
-- если таких значений будет меньше 2:
--- принять для расчета максимальным второе максимальное из массива C13:V13, т.е. max2, т.е. мы отбрасываем первое максимальное значение в массиве
--- найти max_temp2=max2 * 0.8
--- сравнить max_temp2 со всеми значениями в массиве (естественно кроме определенного выше max1) и найти все, что больше либо равны max_temp2:
---- если таких значений 2 и больше - принять третье максимальное из массива C13:V13, т.е. max3
---- если таких значений будет меньше 2 - принять максимальным четвертое максимальное из массива C13:V13

"Результат вычисления" * 2 и записать в ячейки Y13:Y48
В ячейки Z13:Z48 - "Результат вычисления" * 2 + 30%
В ячейки AA13:AA48 - "Результат вычисления" * 2 - 30%
В ячейки AB13:AB48 - "Результат вычисления" * 2 * 1/3
Закрепить область в ячейке C13

Имена файлов начинаются с "Выд", например, ВыдКонBlueP.xls

hxxp://rapidshare.de/files/46153910/temp.rar.html (в архиве три файла для примера)
Автор: MaximuS G
Дата сообщения: 17.03.2009 14:16
SERGE_BLIZNUK

Цитата:
потом формирует командную строчку для архиватора WinRar

А где эта командная строка в архиваторе?
И такая возможность взаимодействия существует только с архиватором, или еще с какими нибудь приложениями? Знаете, где можна подчитать?.. не сталкивался с таким.
Цитата:
а потом вызывается WinRar (выполняется сформированная команда через Shell(adr, vbHide) )

Я знал, что через Shell можна запускать программы, но тут уже получается управление другой программой, так ?
Автор: TONADOOM
Дата сообщения: 17.03.2009 18:04
Всем привет!
есть код, который выделяет из HTML страницы таблицы :

Код: ' В моем случае понадобилось подключить библиотеки:
' Visual Basic For Applications
' Micrisoft Excel 12.0 Object Libary
' OLE Automation
' Microsoft Office 12.0 Object Libary
' Microsoft Forms 2.0 Object Libary
' Microsoft HTML Object Libary
' Microsoft DAO 3.6 Object Libary
' Microsoft Internet Controls
' Microsoft Visual Basic for Applications Extensibility 5.

Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer

Dim oDoc As New mshtml.HTMLDocument
Dim ct As mshtml.IHTMLElementCollection
Dim cellt As mshtml.IHTMLElementCollection
Dim t As mshtml.IHTMLTable
Dim r As mshtml.IHTMLTableRow
Dim c As mshtml.IHTMLTableCell
Dim objLink As HTMLLinkElement
Dim img As HTMLImg
Dim IE As Object

Set IE = CreateObject("InternetExplorer.Application")

With IE
.navigate "FILE://D:\1000.htm" ' здесь может стоять адрес из инета
Do
    If IE.readyState = READYSTATE_COMPLETE Then
Exit Do
    End If
Loop

Set oDoc = .Document

Do
DoEvents
Loop Until oDoc.readyState = "complete"

Set ct = oDoc.getElementsByTagName("Table")

For i = 0 To ct.length - 1

    Set t = ct.Item(i) ' здесь в t скопированны таблицы

Next i
End With

Set IE = Nothing
Set oDoc = Nothing
End Sub
Автор: SERGE_BLIZNUK
Дата сообщения: 17.03.2009 19:51

Цитата:
А где эта командная строка в архиваторе?

есть такое понятие - "консольные приложения" - Интерфейс командной строки
очень многие программы понимают те параметры, которые им передают.
Попробуйте, например, запустить "пуск" - "программы" - "Стандардные" - "Командная строка" и там написать:
notepad.exe Kuku.txt
нажмите Enter - запустится блокнот и предложит создать файл kuku.txt
вот, то, что мы написали: это и есть командная строка!

Почитать про параметры командной строки WINRAR можно в HELP'е WinRar'а или в файлике "C:\Program Files\WinRAR\Rar.txt"


Цитата:
через Shell можна запускать программы

угу. только не управлять! Можно запускать программы и передавать им параметры запуска (только те, которые данная программа поддерживает...
Автор: domo22
Дата сообщения: 17.03.2009 22:59
Скажите пожалуйста, никто не сталкивался как отсортировать иерархический (древовидный) список (сначала по первому столбцу, потом по второму и т.д.):

Код:
2002 год                         высокое
            квартал 4            среднее
            квартал 2         в работе
                        неделя 2    низкое
                        неделя 1    высокое
2001 год                         высокое
2001 год             среднее
            квартал 2         низкое
                        неделя 4    нет данных
2003 год             высокое
            квартал 4         нет данных
            квартал 2         среднее
                        неделя 2    среднее
                        неделя 1    низкое
                        неделя 4    высокое
2005 год             среднее
2004 год             низкое

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

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


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