Dziękuję za pomoc. a jest możliwość by komunikaty o innej treści wyskakiwały niż te standardowe? Można skorzystać z funkcji MsgBox w VBA (tworząc własne komunikaty w zależności od potrzeb, coś w stylu "po wykonaniu czegoś wyświetl komunikat").
Zadeklaruj zmienną publiczną. Np[syntax=vb]Public zm As Variant Private Sub Worksheet_Change(ByVal Target As Range) zm = Target.Value 'miejsce na poszukiwaną funkcje MsgBox ("nowa wartość zmiennej=" & zm) End Sub Private Sub makro() MsgBox "aktualna wartość zmiennej=" & zm End Sub[/syntax]
[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]
[syntax=vb]If My.Computer.FileSystem.FileExists("c://C... Then MsgBox("File found.") Else MsgBox("File not found.") End If[/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ć...
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...
Jak sprawdzasz kolor po indeksie, to odwołuj się do: [syntax=vb]Cells(R.Row, "f").Interior.ColorIndex = 27[/syntax] Poza tym, przez [syntax=vb]MsgBox Cells(R.Row, "f").Interior.ColorIndex[/syntax] upewnij się, że ten "żółty" ma na pewno kod 27.
po komunikat = suma1 dodaj Dodano po 2 Wtedy 'Function formatowanie' odpada
Trochę niestandardowo napisałeś to makro, więc trzeba oczy wytrzeszczać ;) Staraj się wyeliminować wszelkie, niepotrzebne wyjścia z procedury (End). W jednym przypadku (zauważyłeś?) zostajesz z wyłączonym odświeżaniem. Spróbuj takiej konstrukcji [syntax=vb]Sheets(1).Activate Sheets(1).Unprotect Application.ScreenUpdating = False 'zapytamy i użyjemy...
Np (pod warunkiem, że w A1 jest dowolnie sformatowana data) Dim test As Date 'jeśli rok nie gra roli With Sheets("Arkusz1") test = DateSerial(2000, Month(.Cells(1, 1)), Day(.Cells(1, 1))) End With If test <= #12/31/2000# And test >= #12/1/2000# Then MsgBox "OK" End If
lanzul napisał: Ad #1 - zmienna "odp" będzie typu Variant w podtypie odpowiednim do liczby w komórce zawsze Integer - w zależności od wciśnięty przycisk komunikatu MsgBox Zgadza się ... dlatego napisałem właśnie ... : ... W tym przypadku będzie to Integer zwrócone przez funkcję MsgBox :) Natomiast, gdyby się tyczyło zawartości komórki, to już różnie...
Witam [syntax=vbscript]Sub dodaj() a = Split(Range("A1"), Chr(10)) For c = 0 To UBound(a) Suma = Suma + Val(a(c)) Next MsgBox Suma End Sub[/syntax] albo [syntax=vbscript] Sub dod MsgBox Evaluate(Replace(Trim(Range("A1")), Chr(10), "+")) End Sub [/syntax]
Nie wiem nad czym tu się rozdrabniać... i po co te wszystkie linki ; D ale... Jak dobrze rozumiem masz listę w formularzu i dodajesz kolumny w kodzie i chcesz utworzyć zdarzenie dla kliknięcia w nagłówek kolumny. To znajdź w XAMLu swoją listę , najlepiej kliknij na nią to przejdzie Ci do odpowiedniego wiersza i dopisz tam... takie zdarzenie GridViewColumnHeader.Click="ObslugaKlika...
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 =...
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...
Nie mam bladego pojęcia jak to zrobić poproszę o pomoc jest to dosyć pilne. Treść Zadania: Proszę napisać i zastosować w arkuszu funkcję użytkownika obliczającą ile razy w danym tekście wystąpiła wybrana litera. Zastosować funkcję w arkuszu. Następnie napisać procedurę przypisania do obiektu w arkuszu która wywołuje funkcję i wyświetla wynik w oknie...
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]
Po mojemu, dobrze działa. Druga część dotyczy tego samego adresu, ale z inną datą. Tzn, jeśli już się ożeniłem (mam 1 teściową) kiedyś, to po jakie licho mi jeszcze jedna? No chyba, żebym był wdowcem (ktoś wyrwał wodomierz z instalacji). Stąd pytanie, na które możesz odpowiedzieć Tak/Nie. Błąd masz w obsłudze wartości zwróconej przez MsgBox. Prościej...
Można do przycisku przypisać Np takie makro Option Explicit Sub cmdWstaw() Dim pozycja As Integer, numer As Integer Dim kom As Range pozycja = Sheets("Arkusz1").Rang... + 1 If pozycja = 77 Then MsgBox "Osiągnięto koniec zakresu w zestawieniu..." Exit Sub End If For Each...
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...
OK, rzeczywiście jest jak mówisz. Wracając do makra z tego ostatniego pliku: zmień linijkę rekalkulacji w Excelu. Zmiana koloru takowej nie powoduje, więc dopóki coś nie zmieni wartości, funkcja pokaże starą wartość. PS 3. Nie wiem czemu piszesz, że nie możesz funkcji użyć w kodzie VBA: taki sposób wywołania działa: [syntax=vb]MsgBox SumByColorsFuction(Range("AA4:AA13"),...
Chcesz przekazać po wywołaniu zdarzenia kontrolki, tablice kontrolek w której się ona znajduje do funkcji zaznaczenie_badan? Patrząc na logikę znalazłem przy okazji parę błędów w kodzie. Chyba że kod jest bardziej obszerny niż tu przedstawiłeś. W każdym bądź razie napisałem zgodnie z Twoim kodem takie coś ale nie wiem czy o to Ci chodziło: [syntax=vbnet]...
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...
1. Ustawiasz w arkuszu układ danych, tak aby jak najlepiej pasował ci do wyliczeń 2. Określasz i deklarujesz typy zmiennych - jeśli będziesz je wykorzystywać 3. Zliczasz ilość komórek z danymi (liczby) 4. Dla średniej arytmetycznej wykonujesz dodawanie liczb, a następnie podział sumy przez ilość komórek z danymi (liczby) 5. Dla średniej kwadratowej...
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))...
Oczywiście problem rozwiązałem "półautomatycznie" przez kod w vb net: [syntax=vbnet]Dim str As String = "Select NrEwidKontrahenta, Max(DataWstawienia) AS OstatData FROM KONTRAHENCI GROUP BY NrEwidKontrahenta" Dim da As New OleDb.OleDbDataAdapter(str, cnn) da.Fill(ds) petla: For i = 0 To ds.Tables(0).Rows.Count - 1 ' ComboBox1.Items.Add(ds.Tables(0).Rows(i)...
A czemu ta indeksacja nie działa? Czy może mieć na to wpływ fakt, że ten userform jest w Wordzie? gdy wpisuję taki kod (dla uproszczenia w funkcji zamiast dodawania do tablicy będzie msgbox): For i = 1 to 8 if checkbox(i).value = true then msgbox checkbox(i).caption else end inf next to przy uruchamianiu kodu zaznacza się na niebiesko "checkbox" i wyskakuje...
Już mam!!! Teraz walczę nad drugiem - ostatnim - zadaniem. Czy możesz mi powiedzieć jak to ugryźć?? Napisać funkcję użytkownika, która oblicza iloczyn k pierwszych cyfr zadanej liczby. Argumentami funkcji są: wielocyfrowa całkowita liczba dodatnia oraz liczba całkowita k, k < liczba cyfr zadanej liczby. Zastosować funkcję w arkuszu. Następnie przypisać...
Proszę bardzo: [syntax=vb]Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If SaveAsUI Then MsgBox "Zapis do innego pliku nie jest możliwy!", vbInformation Cancel = True End If End Sub[/syntax]Oczywiście można po cichu, bez Msgbox...
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 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...
Jest funkcja "FileExists". Jakieś przykłady są np. tu: http://www.excelforum.pl/light.php/o_t__...
Skoro próbuje Kolega coś sam pokombinować, to trochę pomogę... ;) Nie wiem na ile dobrze zrozumiałem całą ideę, więc będziesz musiał trochę dostosować kod do swoich potrzeb. Zacznijmy od tego, żeby umieścić kod makra wewnątrz takiego fragmentu kodu (fragment dla makra umieszczonego w zdarzeniu kliknięcia przycisku): [syntax=vb]Private Sub CommandButton1_Click()...
czy mozna to jakos uproscic albo tez zapisac jak "Select Case"? Można, ale stracisz na przejrzystości. Np[syntax=vb]Private Function myFunction(typ As String, x As Double, y As Double, z As Double, w As Double) As Double Select Case typ Case "sumzb" 'sumaZbioru myFunction = (x + y + z) / 3 Case "rozzm" 'rozZmienneych myFunction = ((x + y + z) / 3)...
"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"...
:) Antoni nie denerwuj się tylko popatrz na własny przykłąd. W której kolumnie arkusza "Roczny" umieścił byś dane wg twojego opisu? Gdyby nie było takiego przypadku można by było uprościć kod a tak trzeba sprawdzić czy się nie mylisz bo będzie wywalać błąd. [syntax=vb]Sub Przenies() Dim x As Integer, nrKol As Integer 'Sprawdzenie za pomocą licz.jeżeli()...
Szukalem z ciekawosci w VBA Funkcji EX Jezeli(logika,prawda,falsz) i nie umialem znalesc czy istniej odpowiednik? Napisz sobie "tłumacza": http://obrazki.elektroda.pl/2625533000_1... To baaardzo skomplikowany kod [syntax=vb]Sub Pl_En() MsgBox ActiveCell.Formula End Sub[/syntax]
DZIĘKI . Sprawdzę w wolnym czasie i dam znać. Dodano po 5 DZIĘKUJE ZA POMOC .Problem rozwiązałem przez użycie MsgBox i przekierowania za jednym podejściem przez Call do drugiego makra. Jest ok zamykam problem.
Rozwiązałem to w następujący sposób: wyszukanie = "SELECT * from TKlient WHERE NIPKlient = '" & Me!txtNIPKlient & "';" Set db = CurrentDb Set rs = db.OpenRecordset(wyszukanie, dbOpenSnapshot) If rs.EOF = False Then MsgBox "UWAGA: Klient już dodany" Else MsgBox "Można dodać Klienta" End If End Sub Próbowałem jeszcze zrobić bardziej uniwersalne rozwiązanie...
Trzeba sobie radzić inaczej, Np przy pomocy funkcji Dir. Pierwszy, lepszy znaleziony przykład funkcji z wywołaniem.[syntax=vb]Sub testit() myvar = FileList("C:\users\adam\") If TypeName(myvar) <> "Boolean" Then For i = LBound(myvar) To UBound(myvar) Debug.Print myvar(i) Next Else MsgBox "No files found" End If End Sub Function FileList(fldr As...
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...
Może to Ci pomoże. znajduje ostatnią pełną komórkę w ostatnim wierszu i w ostatniej kolumnie: [syntax=vb] MsgBox Cells(Cells.SpecialCells(xlCellTypeLastC... Columns.Count).End(xlToLeft).Address MsgBox Cells(Rows.Count, Cells.SpecialCells(xlCellTypeLastCell).C...
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...
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ę...
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...
Witam, czy mógłby mi ktoś pomóc znaleźć błąd w tej funkcji? Sub zad16() Dim x As Single Dim y As Single Dim z As Single x = InputBox("Podaj swoją wagę w kilogramach") y = InputBox("Podaj swój wzrost w metrach") z = x / Sqr(y) If z > 0 And z < 20 Then MsgBox "Niedowaga" Else If 20 <= z And z < 24 Then MsgBox "Waga prawidłowa" _ Else If 25...
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 ową funkcję zgodnie z regułami, tj. przekazuj do niej odpowiednie argumenty, które uczestniczyć mają w wyliczeniach, a wynik funkcji zwróć poprzez jej nazwę do jakiejś zmiennej, która z wynikiem...
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...
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...
Autorka powinna wtedy albo usunąć istniejące katalogi razem z ich zawartością - ręcznie, albo dopisać stosowne zabezpieczenie... Masz słuszność, chociaż można było zrobić goto i wyświetlić komunikat, ale chyba za dużo programuję w VB.NET i później zapominam, że w VB to było mniej przyjemne :) 1. Zamknij oczy 2. Odpal makro He he... to sobie własnie...
Jeśli dobrze zrozumiałem chodzi o coś takiego: [syntax=vb]Sub FirstAndLast(ByVal c As Integer, ByVal cellRow As Integer, ByVal cellCol As Integer) Dim i As Integer Dim first As Integer Dim last As Integer lastindex = Cells(ActiveSheet.Rows.Count, c).End(xlUp).Row For i = 1 To lastindex If first = 0 And Cells(i, c).Value <> "" Then first = i End...
Deklaracje funkcji umieść w module standardowym usuwając znacznik "Private", samą procedurę w Thisworkbook. Czyli w module: [syntax=vb]Option Explicit Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _ (ByVal lpBuffer As String, _ nSize As Long) As Long[/syntax] w thisworkbook: [syntax=vb]Private Sub Workbook_Open() Dim lpBuff As...
Zwykle używa się trzech. Spróbuj [syntax=vb]MsgBox Replace("abc def ghi", " ", vbNewLine) 'lub Chr(10)[/syntax]Enter ma kod 13. W MsgBox nie widać różnicy, ale w innych przypadkach może być różnie. Na pewno chodzi o Enter?
Może jednak wędkę potrzebujesz: http://bfy.tw/2mse [syntax=vbscript]Sub Rand100(ByRef tb() As Single) Dim y, x As Integer For y = LBound(tb, 1) To UBound(tb, 1) For x = LBound(tb, 2) To UBound(tb, 2) tb(y, x) = Int(10 * Rnd()) Next x Next y End Sub Sub Test1() Dim a() As Single ReDim a(1 To 3, 1 To 3) Rand100 tb:=a MsgBox ("Pasuje: " & CountIf(a, "=9"))...
Pewnie można by za pomocą funkcji i tabel przestawnych, ale tu aż się prosi o użycie jednego zapytania SQL. Usuń kropki z nazw kolumn, sformatuj wszystkie daty jako daty, plik zapisz jako .xlsm i użyj: [syntax=vbscript]Private Sub CommandButton1_Click() On Error GoTo myErr With Sheets("wynik") If .FilterMode Then .ShowAllData .Range("A2:G" & Rows.Count).ClearContents...
Nie wiem, czy to w ogóle możliwe. Zmienna nie jest obiektem, w związku z tym nie ma właściwości (interesująca nas name ) i może mieć tylko wartość. Żeby nie "zaśmiecać" sobie głównej procedury napisałbym funkcję, w której umieściłbym wszystkie możliwe nazwy zmiennych z przypisanymi wartościami i wybierał przez Select Case. Np Sub test() Dim...
Nie testowaliście tow... znaczy kolego PRL Nie.:) Powyższa funkcja nie jest moja. A to moja: [syntax=vbscript]Function PlikIstnieje(Sciezka As String, NazwaPliku As String) As Boolean If Dir(Sciezka & NazwaPliku) <> "" Then PlikIstnieje = True Exit Function End If Dim FS As Object, Katalog As Object, PodKatalog As Object Set FS = CreateObject("Scripting.FileSystemObject...
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...
Jak masz fragment ; Get current system time $tCur = _Date_Time_GetSystemTime() MemoWrite("Current system date/time .: " & _Date_Time_SystemTimeToDateTimeStr($... To zamiast funkcji _Date_Time_SystemTimeToDateTimeStr użyj funkcji _Date_Time_SystemTimeToDateStr tak: ; Get current system time $tCur = _Date_Time_GetSystemTime()...
A czy nie prościej byłoby rozbić ciąg Split'em wg spacji? Powstanie 5-cio elementowa tablica, gdzie druga i czwarta wartość to nasze liczby... Przyznam że nie znałem funkcji split ale rzeczywiście to najszybszy sposób (jedna linijka kodu) i prosty w odwołaniach. ( Na marginesie - dla mniej zorientowanych - pierwszy element tablicy ma "index" 0 ) Sub...
Witam, napisałem w ten sposób aby szukać wyniki zawierające no operator, lub ciąg cyfr, np 999, ale nie działa, z tym że moje pytanie, czy taki zapis ma prawo działać , czy zapisać go jako string, nie używałem jeszcze funkcji instr. Ogólnie znalazłem opis tej funkcji: [syntax=vb]Sub test() If sprawdz_xml("t:\test.xml",RejectReason InStr(1,"RejectReason...
Musisz przekazać zmienne t i c jako parametry do funkcji temp... Pierwszy z brzegu [url=http://www.mielk.pl/pl/kursy/kurs_v... o wykorzystaniu funkcji. Swoją drogą, skoro wszystkie zmienne są liczbami,to czemu String a nie np. Integer?
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(...
Pierwszy problem rozwiążesz za pomocą prostego sprawdzania bieżącej godziny przed wywołaniem formularza: [syntax=vb]If Time > #4:30:00 PM# Then '...kod otwierający formularz... Else MsgBox "Dziś już nie możesz wprowadzić danych, spróbuj następnego dnia roboczego." End If[/syntax] Drugi, po podpięciu w zdarzeniu które jest np. wywoływane po aktualizacji...
A czy jest możliwość stworzenia makra, które po kliknięciu przycisku stworzy automatycznie arkusze dla wszystkich osób (i nada nazwy takie jak w pierwszej kolumnie tabeli tj. nazwisko i imię), a jeśli arkusz dla danych osób już istnieje, to je pominie. Można np tak: 968207
Witam. Dziękuję za pomoc i za fatygę, ale udało mi się. Poszperałem trochę w internecie i znalazłem i zrozumiałem. Poprzez słowa "zapis do notatnika" chodziło o zapis do pliku tekstowego .txt. Teraz już widzę, że jest to niepoprawne, tak samo jak sformułowanie VBA kiedy mówię o VB.NET. Na przyszłość będę uważał. Poniżej to o co mi chodziło: Najpierw...
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, wartość szukana w moim przypadku, jest to numer karty reklamacyjnej, który zmienia się z każdą kolejną kartą. Numer generowany jest w nagłówku arkusza, zatem nie mogę podać lokalizacji wartości szukanej jako adres komórki np A1. Zamiast funkcji VLOOKUP zastanawiam się nad użyciem funkcji FIND jednak mój kod nie działa. Kod zamieszczam poniżej...
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...
komendę dowolną np. tak jak pisałem "pomiar1" i wówczas wysyła mi dane z przetwornika ADC:) funkcja catch mi wyświetla w boxie pomiar. teraz mam pytanie jak ją wpisać do zmiennej a wówczas już mam daną x :) Dodano po 57 char dostaje Dodano po 7 jak mam wyłuskać daną z tej funkcji?? Catch ex As Exception MsgBox(ex.ToString) Dodano po 46 bo ona powoduje...
Znalazłem coś takiego: [syntax=vb] Function losowanie(k As Integer, max As Integer) As Variant Dim wynik() As Variant If k > max Then MsgBox "Błedne argumenty funkcji losującej" End End If ReDim wynik(1 To k) Randomize For i = 1 To k Do los = Int((max * Rnd) + 1) Loop While IsError(Application.Match(los, wynik, 0)) = False wynik(i) = los Next losowanie...
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...
Do samego kopiowania lepiej użyć funkcji for each, która odczyta dane z każdego arkusza i przekopiuje cały zakres. Przyjrzyj się temu rozwiązaniu: Private Sub CommandButton1_Click() Application.ScreenUpdating = False Set wswykaz = ThisWorkbook.Worksheets("Wykaz&... wswykaz.Range("A2:F65536&qu...
[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)...
1. zakres F6:AJ95 ... 2. wykluczył czyszczenie co trzeciego wiersza, tz. żeby w powyższym zakresie nie wyczyścilem mi wierszy: 6, 11, 14, 17 itd. do końca zakresu ... ... (i - 2) Mod 3 <> 0 ... Trochę dziwnie to wykombinowaliście, bo właśnie czyścisz sobie zakres wiersza nr 6, a pozostawiasz nr 8 z zakresu początkowego, który miał być właśnie...
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...
Liczenie md5 dla pliku masz txtmd5.Text = MD5(sciezka) A odpowiadając na Twoje pytanie spróbuj tak: Sub Get_File_Size() File1 = "c:\temp\Sample.txt" MsgBox "The Size of the File is " & FileLen(File1) & " bytes" End Sub albo tak: Dim infoReader As System.IO.FileInfo infoReader = My.Computer.FileSystem.GetFileInfo(&...
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...
[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...
problem stanowi reszta podpowiedzi Nie ... dlaczego ? [syntax=vba] Option Explicit Sub splita_mida_i_reszta() Dim poz As Integer Dim frgm1 As String, frgm2 As String, frgm3 As String, frgm4 As String Dim kawalki As Variant Const przyklad As String = "Raport_09-01-2018_11-00_Dzial Jakosci.xls" 'Nazwa pliku 'Funkcja 'Split' - krok po kroku '===================================...
Czemu jak już zrobiłeś przykład nie załączyłeś go do postu? (spakuj na przyszłość zipem i załącz) Po prostu wykorzystaj funkcję wyszukaj.pionowo() Zamknąłem w pętli i sprawdza po kolumnie M czy wysłano (dlatego tez na końcu pyta czy wysłałeś. Poniżej z paroma "wodotryskami". Makro nie sprawdza poprawności adresu mailowego więc jeżeli będzie zły a ty...
dzięki za pomysły:) kinggustav - nazwy plików co jakiś czas się zmieniają a początek pozostaje ten sam, nazwy plików wczytać do tablic ? -nie za bardzo wiem jak to zrobić:( ale dzięki za jakiś pomysł PRL nie wiem sugerujesz żeby w kodzie było: nazwa = Dir(len(nazwa)=12 & w & "*.htm") niestety jest jeszcze ścieżka do plików: plik = Application.ActiveWorkbook.Path...
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...
[syntax=vbscript]Sub Data() ' ' Data Makro ' 10 myday = InputBox("Podaj dzień.") If myday <> "" Then If IsNumeric(myday) Then Selection.FormulaR1C1 = myday Else MsgBox "Nie podales dnia." GoTo 10 End If End If 20 mymonth = InputBox("Podaj miesiąc.") If myday <> "" Then If IsNumeric(mymonth) Then Selection.FormulaR1C1 = mymonth Else MsgBox...
Pokombinuj z ustawieniem czasu Np. Sleep 100 '1/10 sek. Możesz też zadeklarować publiczną zmienną, liczącą ilość wywołań osobnej procedury z funkcją Sleep, wywoływać ją po zakończeniu pętli (Call czekaj). Myślę o czymś takim Public licznik as Integer Private Sub czekaj() licznik = licznik + 1 If licznik = 5 Then Exit Sub Sleep 200 '1/5sek. Call...
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...
No to napisałem Ci jak to zrobić... Dla przykładu, możesz zrobić taką funkcję: [syntax=vb]Private Function ToDate(ByVal dataStr As String) As Date If Len(dataStr) <> 6 Then MsgBox "Nieprawidłowa długość daty - wymagane 6 znaków", vbCritical + vbOKOnly, "Błąd" Exit Function End If myDate = "20" & Right(dataStr, 2) & "-" & Mid(dataStr,...
Dzień dobry. Za każdym razem kiedy uzupełniany jest arkusz Rejestr podnoszony jest w nim Event pod który można podpiąć sprawdzanie czy wartość już w nim jest: po wstawieniu wartości do arkusza, trzeba dodać jakiś zapis, żeby automatycznie go usuwał ;) (wyłączenie eventów na chwilę, żeby nie powstała nieskończona pętla). Czyli w przypadku wykrycia należałoby...
Rzeczywiście na bieżącą chwilę w kodzie "czysc" jest parę błędów i niepotrzebnych rozwiązań. (może coś się zmieniło w stosunku do pierwszych rozwiązań np. 13 arkuszów lub nie zablokowany arkusz DANE) Wejdź w edytor VBA w Module1 kod makra czyść powinien być taki: nie zamknąłem w okienku kodu by zaznaczyć co należy zmienić lub dodać. ---------------------------...
Adres musi być w cudzysłowie. Lepiej zrobić to tak: 'przeszukiwanie zakresu A1:A1000 For Each c in Range("A1:A1000") if c = "szukana_wartosc" then MsgBox "Znaleziono wartość w wierszu " & c.Row Exit For end if Next c A już najszybciej zrobić to z użyciem funkcji Range("A1:A1000").Find(....), ale przykładu...
Nikt nie ma pomysłu? :( Witam Używasz funkcji jak sama nazwa wskazuje "kopiuj do schowka" powinieneś mieć coś w stylu zapisz jako txt lub export do txt ale możesz i tak [syntax=vbnet]CopyTextToClipboard (szSql) MsgBox ("Dane zostały wygnerowane: " & iColumnCount & " kolumn i " & iRowCount & " wierszy." & vbNewLine & vbNewLine & _ "Teraz za pomocą skrótu...
Co jest w Sheets("Parametry").Range("f1") ? Wynik formuły oraz=( D: D ) (wynik funkcji to prawda) makro nie chce iśc do przodu blokuje się Na jakiej linji? Jaky komunikat? komunikat wyskakuje na linii Else: MsgBox ("Uzupełnij wszystkie wymagane pola") Dodano po 2 Znalazłem rozwiązanie. Błąd był w odwołaniu do złego arkusza.
Tak jak pisałem na początku ;] użyj funkcji Find do znalezienia nazwiska w zakładce "status", coś w style: nazwisko = "ADAM KOWALSKI" Set c = Worksheets("Status").R... LookAt:=xlWhole) If Not c Is Nothing Then if Worksheets("Status").C...
Witam, Możesz to zrobić prościej - przekazując referencję do kontrolki jako argument funkcji. Przykład: [syntax=vb]Private Sub TextBox1_Change() Call Wiadomosc(TextBox1) End Sub Private Sub TextBox2_Change() Call Wiadomosc(TextBox2) End Sub Private Sub TextBox3_Change() Call Wiadomosc(TextBox3) End Sub Private Sub Wiadomosc(ByRef sender As MSForms.TextBox)...
Jeśli makro ma się zachować inaczej w zależności od tego jak zostało wywołane, to trzeba dodać parametr przekazywany do funkcji lub procedury np. MessageVisible as boolean i gdy ma się pojawić ustawić go na true, a gdy nie, na false. Oczywiście sam program też musi być odpowiednio zmodyfikowany, aby sprawdzał wartość tego parametru...
Zacznijmy od tego, ze data jest liczbą. Taką samą obojętnie w jakiej wersji językowej. Jedynie format jej przedstawienia różni się. Operuj w kodzie funkcjami Year(), Month() i Day(). Wtedy nie będziesz miał problemów. Format możesz sobie stosować na końcu obliczeń do odpowiedniego przedstawienia. [syntax=vbscript]Sub q() Dim d As Long d = #8/9/2015#...
Piszę na "ślepo". Nie ingeruję za mocno w twój kod, a w szczególności poprawność zastosowanego warunku w funkcji IF (nie mam po takim wyrywku wiedzy by to z sensem analizować) Zamieniłem zmienną "k" na zmienną "lp". (bo lepiej się kojarzy i przy okazji zastąpi zadanie dane zmiennej "k". Chyba o to chodziło? SDMduplikatZnalezione.AddItem lp linią: SDMduplikatZnalezione.AddItem...
Zakładając, że niewłaściwe NIPy są w kolumnie 'A'. [syntax=vbscript]Function DodajMyslniki(Ciag As String) As String c = Replace(Ciag, "-", "") DodajMyslniki = Left(c, 3) & "-" & Mid(c, 4, 2) & "-" & Mid(c, 6, 2) & "-" & Right(c, 3) End Function Sub NIPy() Sciezka = "C:\PlikiExcela\" Plik = Dir(Sciezka & "*.xls*") Set Ex...
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...
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...
excel msgbox msgbox petla msgbox informacja
oświetlenie kurnika denon mikrofon kontrolka volvo pomarańczowy
grundig sv2000 oprawa świetlówki
Brak ikony odbioru sygnału na telefonie Motorola Mikrofalówka Delonghi pika i nie działa przycisk zatrzymania