Excel
30 отговора
0 прегледа
Re: Щиpлиц
Изглежда не четеш както трябва това, което ти се казва.
Погледни това (ако изображението не излиза - проблема е, че е качено в data.bg)
Погледни това (ако изображението не излиза - проблема е, че е качено в data.bg)
Редактирано от TRN на
Re: Excel
Не успях да намеря къде точно да поставя тези пет реда, за да изтрива старите данни, изписва ми "Грешка"..)) Явно не ги поставям където и както трябва..)) Междувременно попаднах и на интересен код, който ти позволява да сложиш "рекламно" съобщение, което се появява автоматично при стартиране..))
В UserForm - контрола Label /Два пъти върху него за да се отвори редакторът, а също и свойствата при желание/. След това два пъти щракване върху UserForm и от полето Procedure - Initialize. Вътре в процедурата -
Application.OnTime Now + TimeValue("00:00:05"), "KillForm"
Трябва да се получи нещо като:
Private Sub Label1_Click()
End Sub
Private Sub UserForm_Initialize()
Application.OnTime Now + TimeValue("00:00:05"), "KillForm"
End Sub
След това Insert - Module и се въвежда кодът:
Sub KillForm()
Unload UserForm1
End Sub
И накрая в обекта This workbook - два пъти, за да се визуализира частния модул и:
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Затваря се и при стартиране се появява съобщение, което автоматично се изключва и така..)) Абе, интересни неща общо взето..
Ама си е сложно още..
Както и да е..))
В UserForm - контрола Label /Два пъти върху него за да се отвори редакторът, а също и свойствата при желание/. След това два пъти щракване върху UserForm и от полето Procedure - Initialize. Вътре в процедурата -
Application.OnTime Now + TimeValue("00:00:05"), "KillForm"
Трябва да се получи нещо като:
Private Sub Label1_Click()
End Sub
Private Sub UserForm_Initialize()
Application.OnTime Now + TimeValue("00:00:05"), "KillForm"
End Sub
След това Insert - Module и се въвежда кодът:
Sub KillForm()
Unload UserForm1
End Sub
И накрая в обекта This workbook - два пъти, за да се визуализира частния модул и:
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Затваря се и при стартиране се появява съобщение, което автоматично се изключва и така..)) Абе, интересни неща общо взето..
ЗАДАЧКИ-ЗАКАЧКИ..))
Ако някъде има такива интересни задачки-закачки можеш да дадеш линк.. 
Re: Excel
Ок, ето последното ми предложение за тази функция:
Така промяната ще се извърши още с въвеждането на текст в реда, и няма да се обхожда цялата таблица, за да се актуализират числата. Това ще позволи кода да сработва много по-бързо, ако редовете в колона "А" са много.
Щирлиц
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OrigText As String, Parts() As String
Dim Col As Long
Dim Founded As Long, Count As Long
If Target.Column = 1 Then
OrigText = ShrinkText(Sheet1.Range("A" & Target.Row))
Parts = Split(OrigText, " ")
Founded = 0
Col = 2
Do Until Sheet1.Cells(Target.Row, Col) = ""
Sheet1.Cells(Target.Row, Col) = ""
Col = Col + 1
Loop
For Count = 0 To UBound(Parts)
Founded = Founded + 1
Sheet1.Cells(Target.Row, Founded + 1) = Parts(Count)
Next
End If
End Sub
Private Function ShrinkText(strText As String) As String
Dim Count As Long
Const cnChars = ".0123456789"
For Count = 1 To Len(strText)
If InStr(cnChars, Mid(strText, Count, 1)) = 0 Then
Mid(strText, Count, 1) = " "
End If
Next
Do Until InStr(strText, " ") = 0
strText = Replace(strText, " ", " ")
Loop
strText = Trim(strText)
ShrinkText = strText
End Function
Така промяната ще се извърши още с въвеждането на текст в реда, и няма да се обхожда цялата таблица, за да се актуализират числата. Това ще позволи кода да сработва много по-бързо, ако редовете в колона "А" са много.
Щирлиц
Re: zima
Привет пак, вече съм с регистрация.. Благодаря за кода, но не успях да го активирам. Пробвах пак с command button, но не става.. дали е просто допълнение към предишната функция или е съвсем ново? Как да го стартирам? 
Re: zima
Съвсем нов начин на задействане има, и това го пише още в първия му ред:
Private Sub Worksheet_Change(ByVal Target As Range)
Да поясня - в Excel си има събития, които могат да се обработват, и в последния пример съм използвал точно това. В случай, че потребителя промени съдържание на клетка в страницата - се изпълнява този код, и в него е направена проверката дали колоната е "А", и ако е така - тогава вече се продължава изпълнението на кода, и се прави разбивка на текста.
За да попаднеш на правилното място, на което да въведеш този код - просто отваряш Excel, натискаш Alt-F11, и в отворилия се VBA редактор отляво търсиш в първия списък по име тази страница, за която да се изпълнява кода. Кликаш два пъти на нея, и отдясно на празното - пействаш този код така, както е тук в темата. Първата процедура е Worksheet_Change, а функцията под нея си е наша, ние сме си я написали, но трябва да я сложиш и нея там, защоро тя се използва от кода.
Щирлиц
Private Sub Worksheet_Change(ByVal Target As Range)
Да поясня - в Excel си има събития, които могат да се обработват, и в последния пример съм използвал точно това. В случай, че потребителя промени съдържание на клетка в страницата - се изпълнява този код, и в него е направена проверката дали колоната е "А", и ако е така - тогава вече се продължава изпълнението на кода, и се прави разбивка на текста.
За да попаднеш на правилното място, на което да въведеш този код - просто отваряш Excel, натискаш Alt-F11, и в отворилия се VBA редактор отляво търсиш в първия списък по име тази страница, за която да се изпълнява кода. Кликаш два пъти на нея, и отдясно на празното - пействаш този код така, както е тук в темата. Първата процедура е Worksheet_Change, а функцията под нея си е наша, ние сме си я написали, но трябва да я сложиш и нея там, защоро тя се използва от кода.
Щирлиц
Re: Урааааа!!!..))
Получи се! Браво! Вече се коригира и при изтриване на съдържание на стойност не влияе върху по-долните редове..)) Стискам ти ръката, това е наистина професионално изпипано..
Само, ако позволиш.. забелязах, че ако напиша след някое число кг. или лв., то точката "." се визуализира в самостоятелна, следваща клетка.. но ако е част от число /15.30/ например, не изкарва резултат.. Но то и такъв формат по принцип е грешен, мисля да го изолирам просто с функция за валидност на числата.. Точката се използва за дата да речем..))
Е, агенте! Успешно се справихме с мисията благодарение на своевреманната и точно намеса от твоя страна! ПОЗДРАВЛЕНИЯ!
Само, ако позволиш.. забелязах, че ако напиша след някое число кг. или лв., то точката "." се визуализира в самостоятелна, следваща клетка.. но ако е част от число /15.30/ например, не изкарва резултат.. Но то и такъв формат по принцип е грешен, мисля да го изолирам просто с функция за валидност на числата.. Точката се използва за дата да речем..))
Е, агенте! Успешно се справихме с мисията благодарение на своевреманната и точно намеса от твоя страна! ПОЗДРАВЛЕНИЯ!
Re: Урааааа!!!..))
Мда, възможно е точката да излиза като число. Все пак можем да върнем на въоръжение онази хубава функция "IsNumeric", и ще филтрираме докрай. А ако трябва да визуализираш и дати - става още малко по-заплетено, но досега не си споменал нищо по практичекото приложение на цялата еквилибристика, а да се пише на сляпо - не е от най-успешните занимания.
Засега това бяха само тренировки. Като попишеш известно време, ще видиш колко много полезни неща могат да се спретват с VBA под Excel. ... Аз преди се занимавах доста, но зарязах Excel-а по няколко причини, като например, че кода, написан под една версия на Excel понякога създава проблеми, ако се пуска с друга, няма начин за защита на програмния код, и на практика всеки може да го "открадне", и да не получа нито стотинка за труда си, и когато използваш Excel за запис на данни - съхранението на данните става чрез "Запис" на целия файл, и не може да се опресни само конкретна клетка във файла, а това създава необходимост от чегъртането на хард-диска. При по-слаби машини се усеща много, а при работа в мрежа - става невъзможно да се работи.
Има и много други неудобства, пък и използвам повече по-големия събрат на VBA-то - VB6. Напоследък все повече се бъзикам и с AutoIt - един много хубав и лесен език, с който може да се спретват страхотни програмчета, които даже вършат нещо.
Хайде пиши, ако имаш някакви други идеи, пък ще мислим.
П.П. Ей сега от любопитство погледнах старите си проекти на Excel - най-големия е стигнал до 4375 реда код. ;о))
Щирлиц
Засега това бяха само тренировки. Като попишеш известно време, ще видиш колко много полезни неща могат да се спретват с VBA под Excel. ... Аз преди се занимавах доста, но зарязах Excel-а по няколко причини, като например, че кода, написан под една версия на Excel понякога създава проблеми, ако се пуска с друга, няма начин за защита на програмния код, и на практика всеки може да го "открадне", и да не получа нито стотинка за труда си, и когато използваш Excel за запис на данни - съхранението на данните става чрез "Запис" на целия файл, и не може да се опресни само конкретна клетка във файла, а това създава необходимост от чегъртането на хард-диска. При по-слаби машини се усеща много, а при работа в мрежа - става невъзможно да се работи.
Има и много други неудобства, пък и използвам повече по-големия събрат на VBA-то - VB6. Напоследък все повече се бъзикам и с AutoIt - един много хубав и лесен език, с който може да се спретват страхотни програмчета, които даже вършат нещо.
Хайде пиши, ако имаш някакви други идеи, пък ще мислим.
П.П. Ей сега от любопитство погледнах старите си проекти на Excel - най-големия е стигнал до 4375 реда код. ;о))
Щирлиц
Редактирано от Щиpлиц на
Re: Урааааа!!!..))
Уау!
Толкова редове?!..)) то си е направо няква супер програма вече.. явно е било много мощно средство..))
По отношение на проблематиката.. От време на време ми се налага да направя някаква обобщена справка и се опитвам да си оптимизирам работата доколкото това ми позволява.. с цел по-малко усилия и пестене на време.. И в този конкретен случай трябваше да изкарам данни /цифрови/ от клетката и да ги събера.. но, в клетката имаше и думи, което наложи просто да въвеждам числата в съседна колона, направена от мен, и после с елементарното Аутосум - да ги събера.. Нямам идея кога пак би ми се наложило такова нещо, та покрай тоз случай възникна и таз идея.. За което пак ти благодаря.. Има още някои неща, като например от няколко цифри в един ред с думи да изкарам само една, която е в ляво от определена дума "килограм", "лева", "градуса" и т.н., но нека малко посвикна с терминологията тук и тогава може да помислим нещо, ако имаш време и желание.. Засега можеш само да ми изпратиш онова файлче, да го погледна, пък белким нещо влезе в главата!
По отношение на проблематиката.. От време на време ми се налага да направя някаква обобщена справка и се опитвам да си оптимизирам работата доколкото това ми позволява.. с цел по-малко усилия и пестене на време.. И в този конкретен случай трябваше да изкарам данни /цифрови/ от клетката и да ги събера.. но, в клетката имаше и думи, което наложи просто да въвеждам числата в съседна колона, направена от мен, и после с елементарното Аутосум - да ги събера.. Нямам идея кога пак би ми се наложило такова нещо, та покрай тоз случай възникна и таз идея.. За което пак ти благодаря.. Има още някои неща, като например от няколко цифри в един ред с думи да изкарам само една, която е в ляво от определена дума "килограм", "лева", "градуса" и т.н., но нека малко посвикна с терминологията тук и тогава може да помислим нещо, ако имаш време и желание.. Засега можеш само да ми изпратиш онова файлче, да го погледна, пък белким нещо влезе в главата!
Re: Урааааа!!!..))
Сори за закъснението. ;о)) Разбирам, че въпроса е строго индивидуален, но то пък ако нямаше такива въпроси - нямаше да имаме занимания. ;о)
Файлчето лесно ще ти го пратя, ако беше дал мейл. Качвам ти го ТУК, можеш да го дръпнеш спокойно.
Пък ако имаш други идеи - споделяй. ;о) Аз имам нахвърляни няколко полезни функции в Excel - проверка на булстат, проверка на ЕГН, преобразуване на сума към "словом", и т.н. неща. Принципно функциите почват да се търсят и пишат, когато дойде някакво задание, но винаги можем да се забавляваме с нещо дребно. ;о)
Щирлиц
Файлчето лесно ще ти го пратя, ако беше дал мейл. Качвам ти го ТУК, можеш да го дръпнеш спокойно.
Пък ако имаш други идеи - споделяй. ;о) Аз имам нахвърляни няколко полезни функции в Excel - проверка на булстат, проверка на ЕГН, преобразуване на сума към "словом", и т.н. неща. Принципно функциите почват да се търсят и пишат, когато дойде някакво задание, но винаги можем да се забавляваме с нещо дребно. ;о)
Щирлиц
Re: Урааааа!!!..))
Благодаря за файла, ще се опитам да го ползвам доколкото мога..)) Изпратих мейл, но на лична бележка, както помоли..
А иначе за ЕГН-то и "словом" видях следните от тук: [линк]
Не знам дали са същите, като твоите.. :) За булстат нямам идея..)) Много съм в началото на тез неща, но както казах, интересно е..)) До скоро!
Не знам дали са същите, като твоите.. :) За булстат нямам идея..)) Много съм в началото на тез неща, но както казах, интересно е..)) До скоро!