[syntax=vb]Sub AZ() Dim rng As Range, cl As Range Dim frm As Boolean Set rng = Range("F3:DZ100") For Each cl In rng If cl.Formula Like "=*" Then frm = True Exit For End If Next cl If frm Then MsgBox "W arkuszu wystepuje jakas formula" Else '- jakas tam funkcja - End If End Sub [/syntax]
Nazwę pliku(ów, w zależności ile ich zaznaczysz) masz w zmiennej vrtSelectedItem . Nic nie stoi na przeszkodzie aby przypisać ją do zmiennej obiektowej, otworzyć plik, skopiować co trzeba i zamknąć. Podpowiem trochę If .Show = -1 Then For Each vrtSelectedItem In .SelectedItems Set wkb = Workbooks.Open(vrtSelectedItem) 'gdzieś tu powinna być...
po komunikat = suma1 dodaj Dodano po 2 Wtedy 'Function formatowanie' odpada
Poszerzając jeszcze to, co napisał clubs w VBA istnieje zarówno funkcja InputBox, wywoływana wprost, ale również metoda InputBox wywoływana z prefixem Application. Służą właściwie do tego samego, ale ich działanie nieco się różni. Funkcja zwraca wynik zawsze w postaci tekstu i nie jest zlokalizowana (np. na przycisku jest Cancel po angielsku). Metoda...
Funkcja 'Find' jest tak samo szybka/wolna jak pętla. Dlatego najprościej [syntax=vbscript]b = 2 w = Cells(Rows.Count, 4).End(xlUp).Row Do While b <= w If Cells(b, 4) = kierowca And Cells(b, 6) = "NIE" Then Exit Do b = b + 1 Loop If b < w Then MsgBox "znaleziono w wierszu " & b Else MsgBox "nie znaleziono" End If[/syntax]
Funkcja arkuszowa, to trochę karkołomne zadanie. A jeśli okaże się, że liczba jest na innym miejscu niż 3? Ostatnią liczbę w ciągu najprościej "wyciągnąć" stosując wyrażenie regularne w VBA. Np [syntax=vb]Sub AlfaRomek() Dim l As Integer, oRegex As Object Dim objFnd As Object, strText As String Set oRegex = CreateObject("VBScript.RegExp") strText =...
Przy porównywaniu łańcucha (a taki zwraca funkcja format) z datą systemową może być różnie na różnych komputerach. Dlatego najlepiej wykorzystać funkcję zwracającą datę. Np Dim a As Date, b As Date, dtPliku As Date dtPliku = FileDateTime("c:\nazwa_plik... a = DateSerial(Year(dtPliku), Month(dtPliku), Day(dtPliku))...
Funkcja SprawdzNorme powinna zwrócić False, jeżeli norma nie jest spełniona, aby można było przerwać dalsze sprawdzania już przy pierwszym błędzie i uniknąć klikania dziesiątek przycisków OK. Nie możesz dodać w tej funkcji kolejnego sprawdzania, które może zwracać inne wyniki. Dodatkowo, miesiąc sprawdzasz zawsze od 11 wiersza i wystarczy to zrobić...
To jak ten kod bym całkiem uprościł. Jeżeli staniesz na dowolnej komórce a makro "cos" podepniesz pod przycisk (lub kod ze środka procedury cos przekleisz do procedury przycisku) to po przyciśnięciu albo ci napisze że nie ma arkusza albo przerzuci do danego arkusza. Wtedy też funkcja "Last" nie jest potrzebna. Sub cos() Dim Nazwa As String Nazwa...
"Baza" to przykładowa nazwa arkusza, na której ma działać funkcja WYSZUKAJ.PIONOWO - Ty tam możesz wstawić ten zakres, gdzie masz nazwy tych krajów. Żeby Ci to działało na zasadzie "zastępowania", to byś musiała zamieniać wartość na formułę, a do formuły wstawić skrót kraju "na sztywno", czyli taka małą modyfikacja: [syntax=vb]For Each c In .Range("A2:A"...
Przejrzyj dobrze kod. Ostatnią funkcję masz "zaremowaną". [syntax=vb]'Call GetOnlyGoodValues(x1, x2, x3, x4, x5, x6, x7, x8, x9)[/syntax] Wewnątrz GetOnlyGoodValues wykonywane jest przeszukiwanie. Działa to dobrze bo sprawdzałem, ale generowanie czegokolwiek trwa baaaardzo długo. Zapis do komórek Excela mija się z celem o czym już pisałem. Właśnie dodałem...
Czyli jak rozumiem, w VBA nie za bardzo daje się upublicznić tablicę Ależ można tylko trzeba uważać gdzie się wstawia deklarację globalną bo to ma znaczenie. [syntax=vb] ' (powyżej Tablica) ' Deklaracja zmiennych i stałych ' Public Tablica() As Double ' (poniżej Tablica) ' Deklaracja funkcji itp. ' Sub Czytaj() ReDim Tablica(1 To 10, 1 To 10) For i...
Zacznijmy od tego, żebyś nie traktował modułu vba jako nieodłącznego składnika excela powiązanego z nim zasadą "dopóki obrączka nam nie odpuści" - vba to tylko "doszywka" lepiej lub gorzej pracująca, zależnie od sytuacji i danych. To co dzieje się w kodzie modułu niekoniecznie musi odpowiadać temu co dzieje się bezpośrednio w arkuszu. Następnie, w pkt...
Chciałbym poprosić o pomoc w związku z makrem które, muszę zbudować. Mianowicie chodzi mi o to że mam tysiąc komórek które wyglądają mniej więcej tak: dzbanek_02-01-2008_K20 W VBA możesz użyć czegoś takiego: Do moderacji: Wiem, że odświeżam temat, ale może ta krótka instrukcja się komuś przyda, bo autor pewnie już sobie poradził. Usuwajcie jeśli uznacie...
Do autora: Jak zauważyłeś twoja funkcja działa - więc już połowa sukcesu. (na marginesie zmienna "dzień" to nie to samo co zmienna "dzien"więc akurat ten kod który przedstawiłeś nie powinien działać ale ...) Przechodzimy do koncepcji i twojej procedury głównej. Bardzo dobrze pomyślałeś (dobra w tym przypadku koncepcja) że "biorę po kolei dni tygodnia...
Jeśli ktoś zna lepszy sposób to mógłby podać. Można napisać własną funkcję w VBA: W załączniku przykładowy plik z jej działaniem. Funkcja oczekuje, że w komórkach będzie tekst w postaci czterech liczb rozdzielonych dwukropkami (01:02:03:04 lub 1:2:3:4 lub 1:02:03:04 są dla niego akceptowalne i oznaczają jedną godzinę, dwie minuty, 3 sekundy i 4 setne...
ebx, esi i edi są rejestrami które musisz zachować w niezmienionej wersji wracając z funkcji. ebx z niczym extra mi się nie kojaży, ecx działa jako licznik w krótkich rozkazach typu "lawinowego": mov eax,0 ; szukamy zera czyli konca stringu (mov al,0 wystarczy, ale kto tak pisze) mov ecx,-1; max 0xFFFFFFFF znaków do przeszukania mov edi,lpString...
no to musisz pobrać listę plików ze szczegółami, wyłuskać z nazw (lub właściwości pliku) datę/godzinę i w pętli wydać rozkazy kasowania tych, co spełniają kryteria. (at)ElektrodaBot daj program / makro w VBA które odczyta listę plików w katalogu, porówna które były starsze niż tydzień i je skasuje. Bezpośrednia odpowiedź Poniżej masz gotowe makro VBA,...
Dokładnie o coś takiego mi chodziło. Tylko jeszcze chciałem dodatkowo wprowadzić zmienne row i column dla zakresu poprzez instrukcję If Else lub For . Znalazłem następujący kod na angielskiej stronie. Sub ADDCLM() On Error Resume Next Dim Dept_Row As Long Dim Dept_Clm As Long Table1 = Sheet1.Range("A3:A13") ' Employee_ID Column from Employee table Table2...
Ale co dalej chcesz z tym czasem zrobić? - podaj szerszy kontekst. Czas jest liczbą, jego formatowanie ma znaczenie dopiero gdy wynik wyświetlasz np. w MsgBox albo w arkuszu, a to trochę różne sprawy. Jeśli chcesz użyć sformatowanego czasu w VBA, to użyj funkcji WorksheetFunction.Text - otrzymasz w wyniku sformatowany tekst. Funkcja Format nie przewiduje...
Dzień dobry. Borykam się z problemem użycia funkcji Application.Match przy wyszukiwaniu numeru PESEL i zwróceniu numeru rzędu w tabeli. Problem polega na tym, że funkcja ta świetnie sobie radzi, jeżeli PESEL zaczyna się od zera (np.: 01111111111), ale gdy jest już 111111111111, to wywala błąd, że nie znaleziono. Podczas próby ręcznego wpisania PESELu...
(at)clubs Masz rację, jak usuwam linijkę w kodzie z dodatkowym "findem" to pętla działa poprawnie. Poprawiłem trochę kod i praktycznie został mi tylko jeden "find" ale bez niego nie wiem jak to zrobić inaczej aby znaleźć w drugim arkuszu nazwisko wybranego pracownika. A bez tego cały projekt do piachu.... Miałem wstawić plik, ale niestety z braku czasu...
Witam :) Czy istnieje jakaś funkcja która przyjmuje dla zmiennej wartość ostatnio wpisaną w dowolną komórkę Excela? Chciałbym skorzystać z kodu (uruchamia makro po każdym wpisaniu wartości w jakąkolwiek komórkę) Private Sub Worksheet_Change(ByVal Target As Range) 'miejsce na poszukiwaną funkcje MsgBox ("przyjęto nową wartość zmiennej")...
Zrobiłem trochę innym sposobem ale wszystko działa, dziękuję :) Mam przy okazji jeszcze jedno pytanie. Chcę za pomocą inputboxa pozwolić użytkownikowi wybrać kolumnę w której funkcja ma przeszukać ile znajduje się wartości i czy są liczby. Wszystko działa dobrze ale problem pojawia się przy wyborze kolumny, wyskakuje komunikat "Invalid procedure call...
Hej, czy istnieje możliwość stworzenia kodu w VBA, który po uruchomieniu pliku wyświetli msgox o ładowaniu danych, natomiast zamknięcie tego komunikatu będzie możliwe po określonym czasie, np. 1 min lub zamiast msgbox może też pojawić się pasek loading, który również zniknie po 1 min?
takie tstr = Str(Target.Value) jest równoważne z Target. Jeśli używasz angielskiej wersji Excela, to prawie tak, jeśli polskiej - jak ja na ogół i jak pytający - to już zdecydowanie nie! Proponuję wykonać takie makro po wprowadzeniu do komórki liczby dziesiętnej. [syntax=vbscript]Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target & "...
Witam jak powiekszyc tresci wyswietlane w msgbox? bo musze wyswietlic dlugi napis lub liczbe z duza iloscia liczb po przecinku
Niech Kolega ten kod co nie działa wklei, to może ktoś poprawi błędy... I poda wersję Excela. Poza tym Then nie than . Sam warunek, dla aktywnej komórki, jest banalnie prosty: [syntax=vb]If ActiveCell.Interior.ColorIndex = 6 Then MsgBox "Żółty" Else MsgBox "Inny" End If[/syntax]
to funkcja nie zmienia swojej wartości To nieprawda :not: Musisz ponownie wywołać tą funkcję, żeby wyliczyła aktualną (zmienioną) wartość :D Wprowadź sobie np do analizowanego arkusza kod typu [syntax=vbscript]Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "Wybrana komórka ma Bold :" & CzyBold(Target) End Sub[/syntax] i przekonasz...
Funkcja FileExists działa tak: [syntax=vb]Dim fso Dim file As String file = "C:\test.txt" Set fso = CreateObject("Scripting.FileSystemObject... If Not fso.FileExists(file) Then MsgBox file & " nie istnieje" Else MsgBox file & " istnieje" End If[/syntax] Ale spróbuj też prostszego: [syntax=vb]If Dir("C:\test.txt") <> "" Then MsgBox "Plik...
Tak, jest to możliwe. Zrób dokładnie to, o czym piszesz i już. Czego ci brakuje? Składni VBA? To doczytaj. Proponuję zacząć od napisania warunku porównania (if), wpisz datę w jakiejś komórce, zadbaj, żeby naprawdę to była data, zmieniaj tę datę i sprawdzaj czy się zgadza. To najprostsza część zadania, dalej rzeczywiście możesz potrzebować pomocy. Proponuję...
Biorąc pod uwagę, że jest to funkcja i może być użyta w 900 komórkach lepiej zamienić ewentualny opis w MsgBox np. na wynik funkcji. Może to nadmierne zabezpieczenie, ale uwzględniłbym czynnik ludzki- może się zdarzyć, że ktoś wpisze dwie spacje zamiast jednej (oj, zdarza się). Wtedy lepiej wstępnie użyć Replace i zredukować wielokrotne spacje. Tym...
[syntax=vbscript]Sub MergeExcelFiles() Dim fnameList, fnameCurFile As Variant Dim countFiles, countSheets As Integer Dim wksCurSheet As Worksheet Dim wbkCurBook, wbkSrcBook As Workbook fnameList = Application.GetOpenFilename(FileFilter:=... Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xls... Title:="Choose Excel files to merge", MultiSelect:=True)...
Mam taki dziwny problem. Sądzę, że to siedzi gdzieś w deklaracji funkcji, ale nie mam pomysłu o co może mu chodzić. Wstawianie po prostu tekstu działa OK, liczniki OK, natomiast przy wpisywaniu funkcji do komórki idzie mi parzystymi wierszami (co drugi!) i nijak nie mogę tego zmienić. Czyli nieprawidłowo liczy R[" & NrWiersza & "]. Prościutki...
Na pewno błąd jest w wierszu: Tak, to było pierwsze i udało mi się to już zrozumieć w sobotę :) Ale poza dokładnym zdefiniowaniem zmiennych to był jeden z głównych problemów Dzięki Dodano po 8 co tu zepsułem Funkcję jako taką - to nie jest funkcja, tylko procedura wbita w "nazwę" funkcji. Funkcje nie wykonują "aktywnych" działań w arkuszu - skonstruuj...
Witam, chciałbym prosić o pomoc w modyfikacji jednej funkcji: [syntax=vbscript]Sub MergeExcelFiles() Dim fnameList, fnameCurFile As Variant Dim countFiles, countSheets As Integer Dim wksCurSheet As Worksheet Dim wbkCurBook, wbkSrcBook As Workbook fnameList = Application.GetOpenFilename(FileFilter:=... Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xls...
Witam, Mam mały problem z funkcją vlook up. Polega on na tym , że jeżeli w tabeli nie ma wyszukiwanej wartości to pojawia się błąd #N/D( to jest OK), ale nie wyszukuje ostatniej wartości- omija ostatnia linijkę. Nie potrafię tego naprawić. mój kod: Sub vlookup() Dim r As Integer On Error GoTo MyErrorHandler: For r = 2 To Application.CountA(Sheets("baza").Range(...
Myślę że się da :) Funkcja użytkownika może wykonywać dowolny kod VBA, zrób sobie taką funkcję i zobaczysz że działa: Public Function myFunc() MsgBox "test" End Function Może się łączyć z bazą danych, pokazywać formę, usuwać pliki z dysku ;) czy co sobie zażyczysz... Pytanie po co robić coś takiego jako funkcję, nie makro uruchamiane...
[syntax=vbscript]Private Sub Przycisk_Click() Wynik = CzyZawiera("Tekst0", "W") MsgBox Wynik End Sub Function CzyZawiera(Pole As String, Co As String) As String For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then If ctl.Name = Pole Then If ctl.Value = Co Then CzyZawiera = Co Else CzyZawiera = "Nic" End If End If End If Next End Function...
Witam. Mam problem z działaniem funkcji InStr. Konkretnie chodzi mi o pierwszy argument. Na przykład dlaczego w poniższym programie funkcja InStr w 6 wierszu działa w ten sposób że szuka tekstu w tekście licząc od 4 miejsca, a funkcja InStr w 7 wierszu działa inaczej (szuka tekstu w tekście od 1 a nie 4 miejsca) a powinna działać tak samo jak InStr...
Zdaje się, że TRANSPONUJ to funkcja tablicowa. Spróbuj (mogłem pomylić nazwy arkuszy)[syntax=vb]Sub dopisz() Dim wiersz As Long With Sheets("Historie") On Error Resume Next 'tu podstaw swoje przypisanie wiersz = Sheets("Historie").Range("C65536").End(x... + 1 On Error GoTo 0 If wiersz > 0 Then .Range(.Cells(wiersz, "C"), .Cells(wiersz, "M")).FormulaArray...
Np. w arkuszu 3 w C3 jest tekst "paliwo", w D3 jest funkcja suma.warunków zliczająca odpowiednie dane z arkusza 1 (zwroty kosztów paliwa), w E3 jest funkcja suma.warunków zliczająca odpowiednie dane z arkusza 2 (koszty poniesione). W kolumnie C prócz paliwa jest jeszcze 100 innych rzeczy do rozliczania, i komórki w kolumnach D i E posiadają funkcje...
Jakiś czas temu, miałem podobny problem i załatwiłem to za pomocą PDFCreator-a z firmy zwanej [url=https://www.pdfforge.org/pdfcreator... i takiego skryptu: [syntax=vbscript]Const MagicWord = "aaabbbxxxx12345" //haslo Set objArgs = WScript.Arguments If objArgs.Count = 0 Then MsgBox "This script needs a parameter!", vbExclamation, AppTitle WScript.Quit...
Czesc, Mam taki problem napisalam przerobilam funkcje znaleziona w internecie na swoje potrzeby :-) jestem laikiem totalnym jezeli chodzi o VBA. Z gory przepraszam za nie uzywanie polskich znakow. Problem jest nastepujacy moja funkcja dziala na zasadzie przypomnienia mailowego wysylanego z excela na 15 dni przed uplywem waznosci dokumentu na moj adres...
"Kody do VBA"?? Obawiam się że nie rozumiem, co masz na myśli... W Excelu jest wbudowany mechanizm nagrywania makr, który przekłada czynności na kod VBA, używasz go? W praktyce wygląda to tak, że jak chcesz coś zrobić to włączasz nagrywanie makra, wykonujesz tą czynność w Excelu, zatrzymujesz nagrywanie i podglądasz stworzony kod. Potem kopiujesz interesujący...
Proszę Cię bardzo... Mam jeden arkusz który ma działać przy uruchomieniu i następnie po uruchomieniu, wygląda to tak: [syntax=vb] 'to jest działanie po uruchomieniu Private Sub Worksheet_Change(ByVal Target As Range) Dim Symbole Application.EnableEvents = False With Target Symbole = UCase(.Value) Select Case Symbole Case "PS1" .Value = "Ps1" Case "PS2"...
Pustość w określonym wierszu da się wykazać np. sortując wiersze, ale widzę, że sortowanie u ciebie odpada. Można wykryć pusty wiersz w danej kolumnie "stojąc" w niej wcisnąć najpierw END, a potem strzałkę w dół (lub w gorę dla wstecznego wyszukiwania). Można to zastosować w kodzie VBA + zrobić makro w stylu "skocz do następnego pustego rekordu". Ostatni...
A rozwiązałem troszke inaczej, napisałem makro, które kopiuje rekord z tabelacontent do nowego rekodu do tabeli wynik, w vba wywołałem makro przez docmd.runmacro "macro1" i też działa, ale dziękuje Dodano po 1 Czy ide w dobrym kierunku? funkcja zwraca mi wartość liczbową, ale wkońcu coś zwraca: [syntax=vb]Private Sub Polecenie13_Click() Dim xml As New...
No, już lepiej :) Jeszcze fragment Range("A1").Select ActiveSheet.Columns("F:F&qu... = "####-##-##" można zbić w jedną linijkę. Unikaj robienia SELECT kiedy nie musisz, poczytaj o tym tutaj, #TIP5: WorksheetExists = False For each ws in Worksheets if ws.Name = WorksheetName then WorksheetExists...
Witam Piszę makro w VBA pod Excelem 2007 z wykorzystaniem kontrolki mcscomm.ocx. Mogę ustanowić komunikację z urządzeniem za pomocą poniższego kodu: [syntax=VB]Public commX1 As mcscomm.CommX Private Sub CommandButton1_Click() Set commX1 = CreateObject("mcscomm.CommX") commX1.PORTNAME = "\\.\COM3" commX1.BaudRate = 1200 commX1.DATABITS = 7 commX1.StopBits...
Witam, to moje pierwsze kroki w tym programie i natknąłem się na pewną przeszkodę której sam nie jestem w stanie wyminąć. Mianowicie proszę o pomoc lub podpowiedź gdzie znajdę wytłumaczenie poniższego problemu. Chcąc od czegoś zacząć moją naukę z visual basic zrobiłem w Excelu kalkulator odsetek, stworzyłem odpowiedni userform i taki kod: [syntax=vb]Private...
Problem jest taki, że w MS VBA program poniższy działa prawidłowo. Czyli procedura Out wysyła na port LPT liczbę 123 a procedura Inp odczytuje z portu LPT prawidłowo liczbę 123. W OOoB ten sam kod nieprawidłowo używa procedury Out32 z biblioteki inpout32.dll. Wartość wysłana jest przypadkowa. Natomiast funkcja Inp32 działa prawidłowo!!! ' biblioteka...
excel msgbox msgbox petla zamykanie msgbox
max232 odwrócone wtyczka licznika sharan satel perfecta sabotaż wejścia alarm
Jak podłączyć zasilacz Cisco 650W poza serwerem? Przeróbka zasilacza ATX (np. Chieftec, Delta) na ładowarkę akumulatorów samochodowych – zmiana dławika, napięcia i CC/CV