segezha.onego.ru http://segezha.onego.ru/forum/ |
|
Для слегка продвинутых лентяев http://segezha.onego.ru/forum/viewtopic.php?f=20&t=4270 |
Страница 1 из 1 |
Автор: | Самбука [ 23 фев 2012, 18:02 ] |
Заголовок сообщения: | Для слегка продвинутых лентяев |
Наткнулся на слушок, что вышла Visual Basic 7, но чего то хреново ищется.. нагуглил какой то релиз VB6 Здесь. Пока не распаковывал и не знаю, чем от купленой когда то самопально сделаной и напичканой российскими хацкерами сборки и обохваной VB 6.5 отличается. ![]() Но ![]() |
Автор: | Самбука [ 24 фев 2012, 22:38 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
Итог хреновый... навернул винду... фтопку пробные версии... |
Автор: | Raivo [ 24 фев 2012, 23:17 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
Тебе вообще зачем сдался вижУл басик? |
Автор: | Самбука [ 24 фев 2012, 23:48 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
Интересный вапрос... ога... начнем с того, как соединить два каких нить массива данных.. для простоты - пусть будут продажи и курсы валют. у тебя есть продажи в рублях по датам ну и курсы валют. существенный недостатк - отгрузки круглосуточны, а курсы к конкретной дате и выходные и праздеги выпадают (а по умолчанию должны быть на предыдущую дату) - пишется макрос и всё восстановлено. Кроме того...До нового пакета Офиса Эксель имел существенное ограничение - в районе 65 тыс, не помню точно.. потом он прост обрезает данные... в этом случае приходится переходить на Аксесс... удобная программа, но лишенная части функционала Экселя... в нём за уголок ячейку не протащищь, а на расписании и выполнении SQL-запрсов попросту долбанёшься... а вот тут и приходит на помощь среда VB, а в частности - VBA, которым пронизан весь офисный пакет. И из экселя можешь вытащить данные Асксеса и передать их в Ворд.... проще говоря - Аксес - хранилище, Эксель - обработчик, Ворд - визуализация. VB - попросту инструмент... |
Автор: | Самбука [ 25 фев 2012, 00:05 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
Да... что б глумежа не было... я юзаю тока из-за лени... мне не влом посидеть пол дня, но потом на пол часа делать... удачно пример пришол в голову, ога... для многих документов нужна сумма прописью... шаблон в экселе с кучей формул по налогам и дочислений сводится в ИТОГО, где ручкми дописывать... а зачем? если есть инструмент... открываем Visual Basic, новый пустой модуль через Insert - Module Код: Function СУММАПРОПИСЬЮ(n As Double) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ") Nums2 = Array("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", _ "восемьдесят ", "девяносто ") Nums3 = Array("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", _ "восемьсот ", "девятьсот ") Nums4 = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ") Nums5 = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", _ "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ") If n <= 0 Then PropisRus = "ноль" Exit Function End If 'разделяем число на разряды, используя вспомогательную функцию Class ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class(n, 4) dectys = Class(n, 5) sottys = Class(n, 6) mil = Class(n, 7) decmil = Class(n, 8) 'проверяем миллионы Select Case decmil Case 1 mil_txt = Nums5(mil) & "миллионов " GoTo www Case 2 To 9 decmil_txt = Nums2(decmil) End Select Select Case mil Case 1 mil_txt = Nums1(mil) & "миллион " Case 2, 3, 4 mil_txt = Nums1(mil) & "миллиона " Case 5 To 20 mil_txt = Nums1(mil) & "миллионов " End Select www: sottys_txt = Nums3(sottys) 'проверяем тысячи Select Case dectys Case 1 tys_txt = Nums5(tys) & "тысяч " GoTo eee Case 2 To 9 dectys_txt = Nums2(dectys) End Select Select Case tys Case 0 If dectys > 0 Then tys_txt = Nums4(tys) & "тысяч " Case 1 tys_txt = Nums4(tys) & "тысячa " Case 2, 3, 4 tys_txt = Nums4(tys) & "тысячи " Case 5 To 9 tys_txt = Nums4(tys) & "тысяч " End Select If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тысяч " eee: sot_txt = Nums3(sot) 'проверяем десятки Select Case dec Case 1 ed_txt = Nums5(ed) GoTo rrr Case 2 To 9 dec_txt = Nums2(dec) End Select ed_txt = Nums1(ed) rrr: 'формируем итоговую строку СУММАПРОПИСЬЮ = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt End Function 'вспомогательная функция для выделения из числа разрядов Private Function Class(M, I) Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1)) End Function На выходе и имеем: ![]() Сделано 1 раз, на форева... в менюху ёкселя свою кнопку и юзать... |
Автор: | VADR [ 25 фев 2012, 14:54 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
Бр-р-р... какая гадость... |
Автор: | Киссандра [ 25 фев 2012, 15:14 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
Нужно еще учесть, что во многих из "многих документов" сумма прописью должна начинаться с заглавной буквы... |
Автор: | Самбука [ 26 фев 2012, 11:40 ] |
Заголовок сообщения: | Re: Для слегка продвинутых лентяев |
так это как в макросе забьёшь - так и будет... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |