vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest czwartek, 02 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

raport terminów


otwartyotwarty rozpoczął: VBAmator postów: 6



napisał: Trebor
postów: 1209


umieszczony:
4 kwietnia 2017
16:35

  
Niestety w MsgBox nie ma takiej możliwości.
napisał: VBAmator
postów: 67


umieszczony:
4 kwietnia 2017
10:44

  
Bardzo dziękuję.
Kod zaadaptowany, działa super.
Mam jeszcze pytanie. Czy jest możliwość zarządzania czcionką w MsgBox, np. wyróżnić Boldem nazwę klienta itd.
Przydało by się takie zarządzanie wzrokowe.
napisał: Trebor
postów: 1209


umieszczony:
31 marca 2017
16:41

  
Spróbuj tak:
Sub raport()
Dim unikat1 As New Collection, unikat2 As New Collection, licznik1 As Long, komunikat As String
With Sheets("Arkusz1")
'lista unikat1ów
On Error Resume Next
For licznik1 = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
unikat1.Add .Cells(licznik1, 1), CStr(.Cells(licznik1, 1))
Next licznik1
Err.Clear
'tworzenie komunikatu
For licznik1 = 1 To unikat1.Count
komunikat = komunikat & vbNewLine & unikat1(licznik1)
For licznik2 = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(licznik2, 1) = unikat1(licznik1) Then
    unikat2.Add .Cells(licznik2, 2), CStr(.Cells(licznik2, 2))
        If Err.Number = 0 Then komunikat = komunikat & vbNewLine & Cells(licznik2, 2)
    Err.Clear
End If
Next licznik2
Set unikat2 = New Collection
Next licznik1
On Error GoTo 0
End With
MsgBox komunikat
End Sub


Zdajesz sobie sprawę, że Msgbox ma ograniczoną liczbę znaków?
napisał: VBAmator
postów: 67


umieszczony:
31 marca 2017
12:13

  
nazwa pliku rozmiar
VBA pytanie.xlsm 17.67 kB

Dziękuję.
Przepracowałem kod i efekt mam poniżej.
W wyniku poniższego kodu otrzymuję msgbox dla pojedynczego klienta K1 z unikatowymi wysyłkami w danym dniu.
Nie potrafię połączyć kolejnych klientów (klientów znam i są niezmienni) z przypisanymi do nich unikatowymi wysyłkami w jednym MsgBox.

Pomożesz?
Sub raport_new()
Dim unikat As New Collection, licznik As Long, komunikat As String
Dim komorka As Range

With Sheets("Arkusz1")
 'lista unikatów
 On Error Resume Next
  For Each komorka In Range("WYS") ' kol 'B'
   If komorka.Offset(0, -1).Value = "K1" Then
    unikat.Add komorka, CStr(komorka)
   End If
  Next komorka
 On Error GoTo 0
 'tworzenie komunikatu
 komunikat = "K1" & vbNewLine & unikat(1)
  For licznik = 2 To unikat.Count
   komunikat = komunikat & vbNewLine & unikat(licznik)
  Next licznik
End With

MsgBox komunikat
End Sub

napisał: Trebor
postów: 1209


umieszczony:
30 marca 2017
17:53

edytowany:
30 marca 2017
17:54

  
Nie rozumiem jakie terminy ma zawierać raport. Na początek lista unikatowych klientów:
Sub raport()
Dim unikat As New Collection, licznik As Long, komunikat As String
With Sheets("Arkusz1")
'lista unikatów
On Error Resume Next
For licznik = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
unikat.Add .Cells(licznik, 1), CStr(.Cells(licznik, 1))
Next licznik
On Error GoTo 0
'tworzenie komunikatu
komunikat = unikat(1)
For licznik = 2 To unikat.Count
komunikat = komunikat & vbNewLine & unikat(licznik)
Next licznik
End With
MsgBox komunikat
End Sub



Pozdrawiam
napisał: VBAmator
postów: 67


umieszczony:
30 marca 2017
13:56

  
nazwa pliku rozmiar
VBA pytanie.xlsm 14.55 kB

Cześć.

Potrzebuję makro, którego efektem będzie JEDEN komunikat MsgBox zawierający raport:
klient 1: termin7
termin2
klient 2: termin2
termin3
termin6
itd.
Niestety, dane nie mogą być sortowane, każdy klient ma nieznaną ilość terminów ale nie większą niż 7 (klientów jest 9), 1 msgbox na koniec.
Plik uproszczony w załączniku.

Pomożecie?


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z