konto usunięte

Temat: Makro Excel

Witam. Jestem totalnie zielony z makr i języka vba ale pilnie tego potrzebuję w swojej pracy. Więc jeśli ktoś napisze mi makro które potrzebuję to będę bardzo wdzięczny.

Dane w excelu mam takie:
Nazwa arkusza: ZMIENNE
Kolumna A - Lp.
Kolumna E - nazwa kontrahenta
Kolumna I - wysokość należności
Kolumna L - termin zapłaty
Kolumna M - zapłacona kwota

Wszystkie wartości zaczynają się od wiersza 4.

I teraz potrzebuję żeby pojawiał mi się komunikat o braku wpłaty po terminie. Chciałbym żeby było tam zawarte: Lp., nazwa kontrahenta, kwota i kiedy był termin.

Tylko brak wpłaty rozumiany jako wartość "0" i pod warunkiem, że wysokość należności jest większa lub równa od 21 zł (lub po prostu powyżej 20 zł).

Formatowanie warunkowe mam zrobione ale przy kilku tysiącach pozycji ciężko codziennie ich wyszukiwać a też nie chcę używać filtrowania po kolorze i innych danych bo boję się że posypie się mi excel, tym bardziej że jest udostępniony i korzysta z niego kilka osób jednocześnie.

Czy jest to możliwe czy to tylko moje marzenia? :D
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Makro Excel

Z działaniem makr na pliku współdzielonym czasami różnie bywa, ale jest to możliwe.
A ten komunikat to na czym miałby polegać? Wyskakujące okienko z powiadomieniem? Moim zdaniem to fatalny pomysł, przy kilkunastu czy kilkudziesięciu komunikatach można będzie się zaklikać gaszeniem.
Zdecydowanie lepszy byłby tu filtr zaawansowany w drugim arkuszu.

konto usunięte

Temat: Makro Excel

A da się zrobić jeden komunikat z całą listą? Dobrym rozwiązaniem byłby przycisk "Pokaż braki wpłat" - albo coś podobnego, po którym otwierał by się taki komunikat.Ten post został edytowany przez Autora dnia 06.09.19 o godzinie 09:30
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Makro Excel

W Excelu wszystko da się zrobić :)
Spróbuję przygotować.

konto usunięte

Temat: Makro Excel

Super. Dziękuję za zainteresowanie się tematem :)
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Makro Excel

Przykład takiego prostego makra:

Public Sub BrakWplaty()
Dim OstW As Long
Dim i As Long
Dim WierszD As String
Dim Komunikat As String
Dim CzyK As Boolean
OstW = Range("A" & Rows.Count).End(xlUp).Row
If OstW < 4 Then
MsgBox "Brak danych w arkuszu", vbOKOnly
Exit Sub
End If
Komunikat = ""
CzyK = False
For i = 4 To OstW
If IsError(CDate(Range("L" & i))) Then GoTo Nast
If Range("M" & i) = 0 And Range("L" & i) < Date And Range("I" & i) > 20 Then
CzyK = True
WierszD = "LP." & Range("A" & i) & ", Kontrahent:" & Range("E" & i) & ", Kwota:" & Range("I" & i) & ", Termin:" & CDate(Range("L" & i))
If Komunikat = "" Then
Komunikat = WierszD
Else
Komunikat = Komunikat & vbNewLine & WierszD
End If
End If
Nast:
Next i
If CzyK = False Then
MsgBox "Brak przeterminowanych należności powyżej 20zł"
Else
MsgBox Komunikat
End If
End Sub

Uwaga: wiersze, w których termin zapłaty nie jest datą (z doświadczenia wiem, że użytkownicy potrafią tu wykazywać się niezwykłą radosną twórczością) są pomijane.
Na wszelki wypadek:
https://excel.marzatela.pl/blog/data-to-liczba/Ten post został edytowany przez Autora dnia 06.09.19 o godzinie 14:25

konto usunięte

Temat: Makro Excel

No wspaniałe :) !! Działa !! Dziękuję :)

Jest tylko problem, bo to okienko nie pokazuje mi wszystkich. Tak jakby wielkość tego okienka co się pojawia była za mała. Brakuje jakiegoś suwaka.
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Makro Excel

Ze standardami Excela nie zawsze można dyskutować. Można by pomyśleć o własnych formularzu, ale to już bardziej skomplikowana sprawa, trzeba by namieszać w strukturze pliku od strony edytora VBA.
W tej wersji pojawia się kilka komunikatów, każdy ma po 10 wierszy:

Public Sub BrakWplaty()
Dim OstW As Long
Dim i As Long
Dim j As Integer
Dim k As Long
Dim WierszD As String
Dim Komunikat()
Dim CzyK As Boolean
OstW = Range("A" & Rows.Count).End(xlUp).Row
If OstW < 4 Then
MsgBox "Brak danych w arkuszu", vbOKOnly
Exit Sub
End If
ReDim Komunikat(1)
Komunikat(1) = ""
CzyK = False
j = 0
For i = 4 To OstW
If IsError(CDate(Range("L" & i))) Then GoTo Nast
If Range("M" & i) = 0 And Range("L" & i) < Date And Range("I" & i) > 20 Then
If j = 10 Then
k = k + 1
j = 1
ReDim Preserve Komunikat(k)
Komunikat(k) = ""
Else
j = j + 1
End If
CzyK = True
WierszD = "LP." & Range("A" & i) & ", Kontrahent:" & Range("E" & i) & ", Kwota:" & Range("I" & i) & ", Termin:" & CDate(Range("L" & i))
If Komunikat(k) = "" Then
Komunikat(k) = WierszD
Else
Komunikat(k) = Komunikat(k) & vbNewLine & WierszD
End If
End If
Nast:
Next i
If CzyK = False Then
MsgBox "Brak przeterminowanych należności powyżej 20zł"
Else
For i = 1 To k
MsgBox Komunikat(i), vbOKOnly, "Komunikat " & i & " z " & k
Next i
End If
End Sub

konto usunięte

Temat: Makro Excel

Dziękuję, jest idealne :)

@Edit.:

Ajć jednak nie, w pierwszym komunikacie nie mam pierwszych dziesięciu ;/

@Edit 2.:

Cóż, poradziłem sobie :D W pozycji

CzyK = False
j = 0

zmieniłem na

CzyK = False
j = 10

Tak czy owak, dziękuje raz jeszcze :)Ten post został edytowany przez Autora dnia 09.09.19 o godzinie 13:52



Wyślij zaproszenie do