coś pomotalismy:) probowałem naprawic co nieco i dołożyłem rabat przy zakupie...
Do you prefer the English version of the page elektroda?
No, thank you Send me over there'wpisanie marży
If ComboBox2 = "" Then
marza = cenasprz / cenazak / 100
Else
marza = ComboBox2.Value
marza = marza / 100
End If
marza = cenasprz / cenazak / 100
'wpisanie do arkusz ceny sprzedazy
Range(Cells(licznik + 1, 5), Cells(licznik + 1, 6)).Select
cenasprz = TextBox3
Cells(licznik + 1, 5).Value = cenasprz
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.NumberFormat = "#,##0.00 $"
End With
'wpisanie marży
If ComboBox2 = "" Then
marza = (cenasprz - cenazak) / cenazak
Else
marza = ComboBox2.Value / 100
End If
For i = 1 To 100
if cells(i , 1) = "" then end sub
wartosc = cells(i , 1).value
UserForm6.ComboBox2.AddItem wartosc
Next i
kehn wrote:dodałem rabat przy zakupie
For i = 1 To 100
if sheets("Nazwa").cells(i , 1) = "" then exit for
UserForm6.ComboBox2.AddItem sheets("Nazwa").cells(i , 1)
Next i
Private Sub TextBox1_Change()
Dim tekst As String, wynik As String
tekst = TextBox1.Value
wynik = TekstEtykiety(tekst, "Magazyn")
If wynik <> "" Then
Label1.Caption = wynik
Else
wynik = TekstEtykiety(tekst, "Magazyn2")
If wynik <> "" Then
Label1.Caption = wynik
Else
Label1.Caption = "Nie znaleziono."
End If
End If
Private Sub TextBox1_Change()
Dim tekst As String, wynik As String
tekst = TextBox1.Value
For i = 1 To ThisWorkbook.Worksheets.Count
If Left(LCase(Sheets(i).Name), 2) = "m-" Then
wynik = TekstEtykiety(tekst, "i")
If wynik <> "" Then
Label1.Caption = wynik
End If
End If
Next
End Sub
Private Sub TextBox1_Change()
Dim tekst As String, wynik As String, i As Integer
tekst = TextBox1.Value
For i = 1 To ThisWorkbook.Worksheets.Count
' "i" w tej pętli to indeks arkusza
If Left(LCase(Sheets(i).Name), 2) = "m-" Then
'przypisanie wyniku zwróconego przez funkcję. Drugi parametr funkcji to nazwa arkusza
wynik = TekstEtykiety(tekst, Sheets(i).Name)
If wynik <> "" Then
'jeśli znajdzie w arkuszu o indeksie "i", to przypisuje do etykiety
Label1.Caption = wynik
'wynik mamy, więc dalej szukać nie będziemy i procedurę opuszczamy
Exit Sub
End If
End If
Next
'jeśli nie znajdzie, ta część będzie wykonywana
Label1.Caption = "Nie znaleziono."
End Sub
Dim k
k = TextBox2 * 1
cenazak = k
cenazak = TextBox2 *1
Quote:W deklaracjachwpisuje mi do arkusza w/w liczbe zaokrągloną do 8 zł ?
t3 As Currency
Range("K5:H7,I10:I11,I17:I18").Merge
Range("K5:H7,I10:I11,I17:I18").MergeCells = True
Range("I10").VerticalAlignment = xlCenter
adamas_nt wrote:Cóż, zamysł jest dobry. Projekt do najłatwiejszych nie należy i z pewnością jest czasochłonny. Uparcie brniesz dalej, gdzie większość woli gotowce i dawno rzuciłaby to w diabły nie narażając szarych komórek na przepracowanie. Tu tylko podziwiać, gratuluję.
Quote:Szczerze mówiąc zaskoczyłeś mnie tym pytaniemDo tej pory szukałem tylko rozwiązań dotyczących konkretnych fragmentów. Trochę zasugeruję Ci Access'owego podejścia, bo w końcu budujesz program magazynowy (bazę danych).
W takich programach stany magazynowe zmieniają się na podstawie dokumentów: faktur zakupu, sprzedaży, WZ, RW, PZ, PW itd.
W "Dodaj do Magazynu" brakuje (mi) Nr faktury i daty zakupu (łatwiej znaleźć w segregatorze w razie czego i przyda się to do zestawień).
Quote:Gdyby nazwę "Raport Dzienny" zmienić na "Dzienne Zestawienie Sprzedaży" (bo to właśnie robisz) byłoby bardziej "magazynowo". W tym miejscu oddzieliłbym "magazynową", wyliczoną cenę sprzedaży od faktycznej (należałoby zrobić miejsce na jej wpisanie). Domyślnie może być umieszczana ta z "cennika", ale powinna być możliwość zmiany. Ceny są przecież negocjowalne, możesz udzielić różnych rabatów, wykonać przecenę itp.
Quote:Dalej: Jeśli każda dzienna sprzedaż będzie osobnym arkuszem, to... co za 3 lata? Z drugiej strony to nie Access (w końcu wierszy zabraknie). A może jeden skoroszyt (plik) na miesiąc/kwartał, po czym zamykasz okres, blokujesz arkusze (coby nikt nie grzebał) tworząc nowy ze stanami z poprzedniego itd?
Quote:Raporty natomiast służą tylko do podsumowań, statystyk, prezentacji asortymentu, stanów magazynowych, ZESTAWIEŃ SPRZEDAŻY ZA OKRES (dzień, tydzień, miesiąc, od daty do daty) itp. w których używa się filtrów, sortuje, grupuje, podlicza itd. Zostaw to na później.
Quote:Chyba źle myślę.W "Dodaj do Magazynu" brakuje (mi) Nr faktury i daty zakupu (łatwiej znaleźć w segregatorze w razie czego i przyda się to do zestawień).
Worksheets(ark).Range("a" & wrs, "q" & wrs).Select
Sheets(ark).Range("a" & wrs, "q" & wrs).Select
Sheets(ark).Range("a" & wrs & ":q" & wrs).Select
kehn wrote:Powinno to (wg mnie) wyglądać tak:Czyli do każdego dodanego towaru a magazynie ma być info o nr faktury??
i wpisanie faktury twoim zdaniem jakie info powinno zawierać??
kehn wrote:W trybie debugowania sprawdź co jest przypisane zmiennym "ark" i "wrs" (najedź kursorem myszy). Podejrzewam, że co najmniej jednej nic (""). Jeśli wartości przypisujesz w innej procedurze, to może wystarczy zadeklarować je w Global (Na samej górze kodu).co jest nie tak bo wyskakuje błąd
MsgBox "DODANO", vbOKOnly, "Okno dodania"
TextBox1.Value = ""
t1 = t1 - ComboBox1.Value
Sheets(ark).Cells(wrs, 2) = t1
If t1 = 0 Then
Sheets(ark).Range("a" & wrs & ":q" & wrs).Select
Selection.ColorIndex = 6
End If
MsgBox "DODANO", vbOKOnly, "Okno dodania"
TextBox1.Value = ""
Debug.Print ark ' TUTAJ
Debug.Print wrs
Debug.Print t1
Stop
t1 = t1 - ComboBox1.Value
Sheets(ark).Cells(wrs, 2) = t1
If t1 = 0 Then
Sheets(ark).Range("a" & wrs & ":q" & wrs).Select
Selection.ColorIndex = 6
End If
Sheets(ark).Select
With Range("a" & wrs & ":q" & wrs).Interior
.ColorIndex = 3
End With
For i = 1 To ThisWorkbook.Worksheets.Count
If Sheets(i).Name = "M-" & TextBox1 Then
MsgBox "TAKA NAZWA JUZ ISTNIEJE!!!", vbOKOnly, "Podaj inną nazwe!"
TextBox1 = ""
TextBox2 = "": Exit Sub
End If
Next
kehn wrote:Taka już rola MsgBox'a, żeby zatrzymywał i czekał na decyzję użytkownika.chce żeby wyświetlił się msgbox lecz nie zatrzyma on czytania kodu
kehn wrote:Excel z pewnością nie pozwoli na dublowanie nazw arkuszy.jak powstrzymać otwieranie nowego arkusza jak jego nazwa się powtórzy??
Sub bla()
For i = 1 To ThisWorkbook.Worksheets.Count
If Sheets(i).Name = "Arkusz" & Range("A1") Then
MsgBox "TAKA NAZWA JUZ ISTNIEJE!!!"
Range("A1").Select
Exit Sub
End If
Next
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Arkusz" & Range("A1")
End Sub
adamas_nt wrote:Taka już rola MsgBox'a, żeby zatrzymywał i czekał na decyzję użytkownika.
For animacja = 1 To 5 Step 1
przerwa = 1
start = Timer
Do While Timer < start + przerwa
DoEvents
Loop
With Range("a" & wrs).Interior
.ColorIndex = 2
End With
If animacja = 3 Then
End If
start = Timer
Do While Timer < start + przerwa
DoEvents
Loop
With Range("a" & wrs).Interior
.ColorIndex = 3
End With
Next animacja
MsgBox "W magazynie skończył sie kod " & kk, vbOKOnly, "Zero sztuk w magazynie"
adamas_nt wrote:Excel z pewnością nie pozwoli na dublowanie nazw arkuszy.
If Sheets(nazwaarkusza).Name = "M-" & x Then
kehn wrote:Po lewej stronie znaku "=" zmienna i to indeks arkusza. Wyrażenie "Sheets(i).Name" zwraca wartość tekstową (nazwę). Nie ma to znaczenia dla prawej strony. W nowym (standardowym) pliku "Arkusz1" i "Sheets(1).Name" to ten sam string.A można zmienna i zamienić na nazwę arkusza a nie wartość liczbową to by rozwiązało problem.
For i = 1 To ThisWorkbook.Worksheets.Count
If Sheets(i).Name = "M-" & x Then
MsgBox "TAKA NAZWA JUZ ISTNIEJE!!!", vbOKOnly, "Podaj inną nazwe!"
TextBox1 = ""
TextBox2 = ""
Exit Sub
End If
Next