Chyba złapałem. Moim zdaniem nie powinna to być procedura zdarzeniowa, a zwykłe makro. Jeśli chodzi o coś takiego: http://obrazki.elektroda.pl/4353087600_1... Spróbuj w ten sposób For Each kom in zakres .
Zerknij [url=http://www.cpearson.com/excel/vbe.a...
Witaj. Spróbuj: [syntax=vb]Sub test() Dim wynik as boolean wynik = False For kolumna = 1 To 11 If Cells(2, kolumna) = "" Then wynik = True Next kolumna if wynik then MsgBox "wpisz wszystkie wartości" End Sub[/syntax]
A nie wystarczy sprawdzanie poprawności danych - opcja pełna liczba i podać zakres od 0 albo od 1 do ile potrzeba. Jeśli dane wprowadzane z klawiatury i użytkownik nie jest złośliwy, to powinno wystarczyć. Co innego jeśli dane są kopiowane z innych komórek, wtedy ten mechanizm nie działa. Wstawiłem do A1. Komunikat MsgBox można wyświetlić przy zmianie...
Office dobrze działa.:) [syntax=vbscript]Sub Sayhello() Msg = "Czy nazywasz się " & Application.UserName & "?" Ans = MsgBox(Msg, vbYesNo) If Ans = vbYes Then MsgBox "Jestem Jasnowidzem!" Else MsgBox "Nic się nie stało" End If End Sub [/syntax] Tak jest czytelniej.
A powinno... Makra masz włączone?
Zamiast MsgBox ("1")
Trzeba wrzucić to w pętlę. Jak znajdzie robi warunek PRAWDA Jak nie znajdzie to w warunku FAŁSZ wyświetla Msgbox i kończy działanie
i chciałbym go podzielić na mniejsze pliki według kolumny A Zacznij od znalezienia unikatowych wartości z kolumny A bo musisz mieć podstawę do sprawdzania [syntax=vb]Sub FindUniqInColumn(ByVal col As Byte, ByRef items As Collection) Dim i As Integer Dim cnt As Integer Excel.ActiveSheet.Columns(col).Copy Columns(250) Excel.ActiveSheet.Columns(250).RemoveDup...
mogło by być komunikat że nieaktualna wersja Zamiast ThisWorkbook.Close False Wpisz MsgBox "Nieaktualna wersja"
Niestety powyższe skrypty tego nie rozwiazuja Bo to są przykłady, a nie rozwiązania. Ciężko przerobić A na C i 5 na 60? [syntax=vbscript]Private Sub Workbook_Open() Dni = 30 MsgBox "Promocje kończące się za " & Dni & " dni: " & Application.CountIf(Range("C1:C" & Cells(Rows.Count, "A").End(xlUp).Row), "=" & Dni) Dni = 60 MsgBox "Promocje kończące się...
[syntax=vbscript]Sub Drukuj() If Dir(Range("B1")) <> "" Then Workbooks.Open (Range("B1")) For x = 1 To Sheets.Count If Sheets(x).Name Like "*jakiś*" Then MsgBox Sheets(x).PrintOut Exit For End If Next ActiveWorkbook.Close End If End Sub [/syntax]
Bez sensu, ale: [syntax=vbscript]Private Sub Workbook_Open() a = Weekday(Date) If a = vbSunday Or a = vbWednesday Or a = vbFriday Then MsgBox "Czy zrobiłeś porządki?", vbYesNo, "UWAGA" End Sub [/syntax]
[syntax=vb] If ostatniwiersz <> 24 Then MsgBox "W arkuszu jest " & ostatniwiersz & " wierszy" [/syntax]
Rozwiązań jest naprawdę sporo Zgadzam się z tym poglądem i choć autor postu chyba zasypał się w tych rejestrowanych makrach :-) to podsuwam nieco inne rozwiązanie tego zadania marek003 obawiam się uruchomienia takiego masowego wydruku na nieokreślonej drukarce (jednostronna czy dwustronna) i dlatego proponuję rozwiązanie z exportem wszystkich podzleceń...
[syntax=vbscript]Sub Sumuj() Application.ScreenUpdating = False Katalog = "C:PlikiExcela" Plik = Dir(Katalog & "*.xls*") While Plik <> "" Set a = Workbooks.Open(Katalog & Plik) For x = 1 To Sheets.Count Sheets(x).Range("OO1").Formula = "=SUM(A1:A100)" s = s + Sheets(x).Range("OO1") Sheets(x).Range("OO1") = "" Next a.Close False Plik =...
Jesli naprosto usunuc - tak, a jesli zamiast 2 MsgBox If odp=vbYes ??
Witaj [syntax=vb] For Each p In Workbooks(nazwa).BuiltinDocumentProperti... If p.Name = "Creation date" then x = p.Value Next Msgbox x [/syntax] Dostosuj
Wystarczy zebrać wszystkie komunikaty do jednego stringa a następnie umieścić w jednym msgboxie. Pomiędzy poszczególnymi stringami możesz umieścić vbCrLf aby było czytelniej.
A jak to makro uruchamiasz, przyciskiem, skrótem? Wystarczy: [syntax=vbscript]Sub qq() Dim r As Range Set r = Range(ActiveCell, ActiveCell) Range("A1").Select MsgBox "Wybrałem A1." Range(r, r).Select MsgBox "Wybrałem poprzednią komórkę." End Sub [/syntax]
[syntax=vb]Sub sciezki() Dim sciezka As Variant 'opcja1 - na tablicy sciezka = "c:\moje dokumenty\wiesiek\plik 123.xlsx" sciezka = Split(sciezka, "\") nazwa = sciezka(UBound(sciezka)) ReDim Preserve sciezka(UBound(sciezka) - 1) 'obcinamy ostatnią część tablicy sciezka = Join(sciezka, "\") 'kleimy na nowo MsgBox nazwa MsgBox sciezka 'opcja2 - na pozycji...
A gdyby tak 'Dir'em go? [syntax=vb]pth = ThisWorkbook.Path & "\" strPdf = txtNazwiskoImie & ".pdf" plik = Dir(pth & strPdf) 'lub 'plik = Dir(ThisWorkbook.Path & "\" & txtNazwiskoImie & ".pdf") If plik <> "" Then MsgBox "ChkBox=true" Else MsgBox "ChkBox=false" End If[/syntax]
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...
[syntax=vbnet]Sub test() Lst = Array(1, 4, 9, 10, 11) For Each k In Lst MsgBox Str(k) Next End Sub[/syntax]
Jak wyżej. Porównaj datę z systemową[syntax=vb]If Date < #7/17/2012# Then 'format USA: mm/dd/rrrr 'makro 'jeszcze tylko dziś Else MsgBox "komunikat" End If[/syntax]
Jeśli datę zapisujesz w komórce, to może okazać się, że to nie taka prosta sprawa. W innym przypadku spróbuj podmienić separator. Np [syntax=vb]jakasData = Date If Application.International(xlDateSeparato... <> "." Then jakasData = Format(jakasData, "dd.MM.yyyy") End If MsgBox jakasData[/syntax]
Wypróbuj coś takiego, ew. przerób do własnych potrzeb: [syntax=vb]IsValid = True For Each ctrl In UserForm1.Controls If TypeName(ctrl) = "TextBox" Then If ctrl.Text = "" Then IsValid = False End If End If If TypeName(ctrl) = "ComboBox" Then If ctrl.ListIndex < 0 Then IsValid = False End If End If Next ctrl If IsValid Then MsgBox "OK" Else MsgBox...
Jest przypisanie, jest wyszukiwanie wolnego wiersza, brakuje tylko instrukcji warunkowej. Napisz najpierw samą instrukcję, następnie podstaw wyszukiwanie i przypisanie. Przeanalizuj: [syntax=vb]If usfdiplomaden.ComboBoxprefix3.Value = "Frau" Then MsgBox "Kobieta, czyli ""in""" 'sprawdzimy czy dobrze. Później linię usuniemy 'wyszukanie1 'przypisanie1...
Czy 'txtPDF_List' to twój 'textbox'? Jeżeli tak to ominiemy ten 'klipbord' [syntax=vbscript]Private Sub cmdList_Click() With txtPDF_List If .Text <> "" Then .SelStart = 0 .SelLength = .TextLength .Copy MsgBox "Skopiowano nazwę dla listu przewozowego " & txtKURIER & ": " & Chr(10) & _ txtPDF_List, vbInformation, "Kopiowanie" Else...
Mały przykład [syntax=vb]Sub Petla() Dim licznik As Integer, ile As Integer ile = 500 'ile = Range("E1") Do While licznik < ile licznik = licznik + 1 test = Cells(licznik, 1) Loop MsgBox licznik End Sub[/syntax]
:) [syntax=vbscript]Sub Log_Ok() Dim ostkomzakr As String Dim LogOk As Range With ThisWorkbook.Sheets("Jakiś_arkusz").Rang... ostkomzakr = Split(.Address(0, 0), ":", -1, 1)(1) Set LogOk = .Find(Environ("Username"), .Range(ostkomzakr), xlFormulas, xlWhole, xlByRows) If LogOk Is Nothing Then Set LogOk = .Find(Environ("Username"), .Range(ostkomzakr),...
Może to Cię do czegoś natchnie... [syntax=vb]Const NAZWA_PLIKU As String = "C:\EX04\1.xlsm" Dim plik As Workbook Set plik = Workbooks.Open(Filename:=NAZWA_PLIKU) If plik.ReadOnly Then plik.Close (False) MsgBox "Nie podziałamy... :(" Else plik.Sheets(1).Range("A1").Value = Now plik.Close (True) MsgBox "Zapisano!..." End If[/syntax]
[syntax=vbscript]Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 12 And Target = "przegrany" Then If Cells(Target.Row, "M") = "" Then MsgBox "Wprowadź komentarz!", vbCritical, "UWAGA" End If End Sub [/syntax]
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]
[syntax=vbscript]Sub waluta_150_180() a = "waluta 150 i 180" With Sheets("Formularz") If .Range("A15") = a Then MsgBox ("Wartości waluty zostaną zmienione. Sprawdź kurs!"), vbOKOnly End If For x = 3 To 16 If .Range("A15") = a And .Cells(15, x) = 135 Then .Cells(15, x) = 150 If .Range("A15") = a And .Cells(15, x) = 165 Then .Cells(15, x) = 180 Next End...
Jedynie jak zaznaczę niechcący więcej jak jedną komórkę i wprowadzę jakiekolwiek dane to po potwierdzeniu wyskakuje błąd: Podmień [syntax=vbscript]Dim s As Variant Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A10")) Is Nothing Then If Target = "" Then Exit Sub Application.EnableEvents = False If Left(Target,...
Witam Może być makro [syntax=vbscript]Sub Zapisz() Application.ScreenUpdating = False plik = Left(ActiveWorkbook.FullName, InStr(ActiveWorkbook.FullName, ".")) & "txt" ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=plik, FileFormat:=xlCSVMSDOS ActiveWorkbook.Close False MsgBox "zapisano " & plik End Sub[/syntax]
[syntax=vb]xx = sciezka & "\Dokumenty\LZH\" & NazwiskoImie If Dir(xx, vbDirectory) = "" Then MsgBox "Nie ma Folderza": Exit Sub If Dir(xx & "\*.*") = "" Then MsgBox "Folderz pusty": Exit Sub With Application.FileDialog(msoFileDialogOpen... .InitialFileName = xx .Show End With [/syntax]
chce żeby wyświetlił się msgbox lecz nie zatrzyma on czytania kodu Taka już rola MsgBox'a , żeby zatrzymywał i czekał na decyzję użytkownika. jak powstrzymać otwieranie nowego arkusza jak jego nazwa się powtórzy?? Excel z pewnością nie pozwoli na dublowanie nazw arkuszy. Jeśli chodzi o nadawanie nazw musiałbyś najpierw wykonać porównanie i dopiero...
W kodzie skoroszytu [syntax=vb]Private Sub Workbook_Open() Dim szukany As Worksheet y = CStr(Date) For Each szukany In ThisWorkbook.Worksheets With szukany If CStr(.Range("A1")) = y Then .Activate Exit Sub End If End With Next szukany MsgBox ("Nie ma") End Sub [/syntax]
A co jest przechowywane w a? znaczy się mychą coś zaznacza i dopiero puszczasz makro? a = Selection.Row ? Moja porada to za pomocą komendy msgbox wyświetlaj sobie na bierząco czy masz właściwą ścieżkę przechowywaną w "strName" po każdej modyfikacji rób: Msgbox strName Chyba wiem w czym tkwił błąd. Zapomniałeś jednego shesha:) strName = strPath & "\"...
makro stworzyłem poprzez nagrywanie. Poprzez nagrywanie makra nie ma możliwości, żeby Excel dodał MsgBox. [syntax=vbscript]ActiveWindow.Close False[/syntax]
[syntax=vbscript] Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long ' Public Function IsInternetConnected() As Boolean Dim strConnType As String Dim lngReturnStatus As Long IsInternetConnected = False lngReturnStatus...
Może być coś takiego wklej to ThisWorkbook [syntax=vbscript]Private Sub Workbook_BeforePrint(Cancel As Boolean) If Range("B6") = "" Then MsgBox "Blokada wypełnij B6" Cancel = True Else Cancel = False End If End Sub[/syntax]
a da sie zrobić ze po zeskanowaniu/wpisaniu w zółtym polu numeru narzędzia wprowadzany numer zniknie zeby nie trzeba bylo kasować recznie? Czytnik nadpisze wartość, ale jeśli musi być... Dopisz sobie po '.Select' '.Value=""': [syntax=vbscript] Else MsgBox "Nie ma w bazie" End If .Select .Value = "" 'to tutaj End If[/syntax]
Spróbuj z anulowaniem zdarzenia (Cancel=True) Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If IsNumeric(Okno.TextBox1.Value) = False Then MsgBox "popraw" Cancel = True End If End Sub
Wklej to w userforma [syntax=vb]Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True MsgBox "Blokada" End If End Sub[/syntax]
po komunikat = suma1 dodaj Dodano po 2 Wtedy 'Function formatowanie' odpada
Czy istnieje jakiś inny "sposób", aby to jednak formuła zmieniająca wartość komórki była tzw "wyzwalaczem" makro? Generalnie tak - możesz np. skorzystać z kodu typu: x=Target.Row :cry: Jak widzę w Twoim pliku radzisz sobie dobrze z modyfikacją i dostosowywaniem kodu VBA do swoich potrzeb :D
trochę zmieniłem podejście Musisz założyć z góry co chcesz osiągnąć a nie co chwile wklejać jakieś makra. "Widzę", że chcesz pobrać tylko 5 wartości z kolumn(F,J,L,N,W) można to zrobisz tak j.w czy przez zwykłe kopiowanie. Chciałbym, żeby napisany kod mógł sprawdzić czy plik jest już otwarty i jeżeli tak, żeby pominął krok otwierania pliku - nie udało...
excel makro msgbox msgbox informacja msgbox formatowanie
karta pamięci uszkodzona sn1533 zasilacz picasso kostka stacyjki
Mercedes X164 – lokalizacja bezpiecznika i przekaźnika oświetlenia komfortu w kabinie Becker BE 6802 RB3 złącze 22-pin Chrysler – rozpiska pinów, schemat, adaptery