Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 161 Skopiuj do schowka Problem z makrem czyszczącym wpisy.
Autor Wiadomość
m.janusz 
Fan Excela


Posty: 79
Wysłany: 27-12-2006, 13:00   Problem z makrem czyszczącym wpisy.

Witam !
Mam pytanko, co jest źle?
Tym makrem poniżej obliczam ilość wełny zapisanej w arkuszu.
A=500, H=500, L=1000, n=1, ilość sztuk = 1
Ładnie obliczy że jest to 1m2 wełny 30mm i 0,5m2 wełny 40mm (tak ma być).
Tu zaczynają się schody. Czyszczę ten wpis (makrem czyścioch), i jest wyczyszczony w zapisie i w obliczeniach.
Wpisuję inne wymiary do obliczenia, obliczam (makrem materiałówka) i oblicza znowu dobrze lecz gdzieś w pamięci zostały parametry z poprzedniego obliczenia.
Po prostu dodają się obliczenia i wynik jest kłamliwy.
Jest sposób na wyczyszczenie z pamięci poprzedniego wpisu, przez zamknięcie całego arkusza, i po ponownym otwarciu mogę dokonać następnego obliczenia, które jest dokładne.
Poniżej umieszczam makra, które te operacje wykonują.
CZY JEST NA TO SPOSÓB, by nie zamykać za każdym razem całego arkusza.

Sub Makro_Materiałówka()
Dim obcięcie As Integer
Czyścioch
Range("B14").Select
For parametr = 0 To 28
wzorzec = Range("o14").Offset(parametr, 0)
If wzorzec = "" Then GoTo nex
obcięcie = CSng(Left(wzorzec, 1))
Select Case obcięcie
Case 1
SD
End Select

nex: Next parametr

End Sub


Sub SD()
Dim H, L, n, ilość, przy As Integer
H = ActiveCell.Offset(parametr, 1)
L = ActiveCell.Offset(parametr, 2)
n = ActiveCell.Offset(parametr, 3)
ilość = ActiveCell.Offset(parametr, 8)
If wzorzec = "5" Then
Wełna(2) = Wełna(2) + (H + 100) * 3.14 * L * ilość / 1000000
End If
If wzorzec = "58" Then
Wełna(5) = Wełna(5) + (H + 200) * 3.14 * L * ilość / 1000000
End If
If wzorzec = "51" Then
Wełna(1) = Wełna(1) + H * L * n * 2 * ilość / 1000000
Wełna(2) = Wełna(2) + H * L * n * ilość / 1000000
End If
If wzorzec = "52" Then
Wełna(1) = Wełna(1) + H * L * n * 2 * ilość / 1000000
Wełna(2) = Wełna(2) + H * L * n * 2 * ilość / 1000000
Wełna(3) = Wełna(3) + H * L * n * ilość / 1000000
End If
If wzorzec = "53" Then
Wełna(1) = Wełna(1) + H * L * n * ilość / 1000000
Wełna(4) = Wełna(4) + H * L * n * ilość / 1000000
End If
If wzorzec = "54" Then
Wełna(1) = Wełna(1) + H * L * n * ilość / 1000000
Wełna(4) = Wełna(4) + H * L * n * ilość / 1000000
Wełna(5) = Wełna(5) + H * L * n * ilość / 1000000
End If
For przy = 1 To 5
Worksheets("Komp.materiał").Range("E100").Offset(przy, 0) = Wełna(przy)
Next przy
End Sub


Sub Czyścioch()
Dim licznik As Integer
Application.ScreenUpdating = False
Sheets("Komp.materiał").Select
Sheets("Komp.materiał").Range(Cells(55, 5), Cells(87, 5)).ClearContents
Sheets("Komp.materiał").Range(Cells(55, 9), Cells(86, 9)).ClearContents
Sheets("Komp.materiał").Range(Cells(90, 9), Cells(94, 9)).ClearContents
Sheets("Komp.materiał").Range(Cells(92, 5), Cells(97, 5)).ClearContents
Sheets("Komp.materiał").Range(Cells(101, 5), Cells(105, 5)).ClearContents
Sheets("Komp.materiał").Range("I97").ClearContents
Sheets("Komp.materiał").Range("I108").ClearContents
Sheets("Komp.materiał").Range(Cells(95, 10), Cells(105, 10)).ClearContents
Sheets("Komponenty").Select
Range("B14").Select
For licznik = 1 To 5
Wełna(licznik) = 0
Next licznik
End Sub

Proszę o pomoc.
_________________
jmisiek
ID posta: 816 Skopiuj do schowka
 
 
Trebor 
Excel Expert


Pomógł: 1752 razy
Posty: 4680
Wysłany: 27-12-2006, 14:00   

Twój kod jest niekompletny z powodu braku deklaracji. W makrze czyszczącym spróbuj wyczyścić tablicę w taki sposób
Kod:

Erase wełna


Pozdrawiam
_________________
Trebbor@wp.pl
ID posta: 820 Skopiuj do schowka
 
 
m.janusz 
Fan Excela


Posty: 79
Wysłany: 27-12-2006, 18:48   Problem z makrem czyszczącym wpisy

Myślałem ze deklaracja jest na poczatku.

Option Explicit
Dim Pomocnik, wzorzec As String, parametr As Integer, pozycja, sygnał As Integer
Dim Elementy(33), I, ElementyEl(32), ElementyPM(6), ElementyPWR, Wełn(5), Siłownik(7), Trafag, _a
Esti, BAE, OMRON, DKH, KS, Siatka As Single

Jeżeli nie to podpowiedz. Proszę
_________________
jmisiek
ID posta: 827 Skopiuj do schowka
 
 
Trebor 
Excel Expert


Pomógł: 1752 razy
Posty: 4680
Wysłany: 27-12-2006, 20:42   

Zakładam, że Wełn(5) to błąd kopiowania na forum ponieważ łącznie z Option Explicit nie chciało by to działać.

W procedurze Makro_Materiałówka sprawdzasz 29 razy czy w komórkach pierwszy znak to 1. Jeśli to prawda to przechodzisz do procedury SD i wykonujesz obliczenia które na końcu zapisujesz do komórek. Szukasz następnych danych zaczynających się na jeden i tak do końca pętli. Do arkusza zapisujesz sumę wszystkich np. dla Wełna(1) może to być suma 29 składników. Czy takie były Twoje intencje?


Pozdrawiam
_________________
Trebbor@wp.pl
ID posta: 828 Skopiuj do schowka
 
 
m.janusz 
Fan Excela


Posty: 79
Wysłany: 28-12-2006, 14:18   Problem z makrem czyszczącym wpisy.

Witam
Tak Wełn(5) to błąd, ale w makrze jest dobrze. Tak ma zapisać sumę z pięciu wzorców (sprawdzając 29 razy) w jednaj komórce.
Co z tym Kodem „Erase Wełna”, naprawdę nie jestem dobry (w te klocki ), kopiuję makra, które mam za szablony. Obliczenia matematyczne wykonuję sam, i by wskakiwały obliczenia tam gdzie chcę w danym arkuszu.
Jeżeli mogę, to jeszcze jedno. Podczas gdy wybieram z listy rozwijanej ten sam element co poprzednio, muszę zatwierdzić ENTEREM a nie kliknięciem myszki, gdy na inny to wystarczy klik myszki.
Proszę pomóż
_________________
jmisiek
ID posta: 830 Skopiuj do schowka
 
 
Tajan


Pomógł: 5618 razy
Posty: 12152
Wysłany: 28-12-2006, 14:26   

Proponuję abyś wrzucił swój skoroszyt na forum (dane nie muszą być prawdziwe, byle makro funkcjonowało). Wtedy szybciej uzyskasz pomoc.
ID posta: 831 Skopiuj do schowka
 
 
m.janusz 
Fan Excela


Posty: 79
Wysłany: 28-12-2006, 15:11   Problem z makrem czyszczącym wpisy.

OKi
Przygotuję ten arkusz i prześlę na forum.
Pozdrawiam
_________________
jmisiek
ID posta: 832 Skopiuj do schowka
 
 
m.janusz 
Fan Excela


Posty: 79
Wysłany: 28-12-2006, 19:21   Problem z makrem czyszczącym wpisy.

Witam ponownie.
Już naprawiłem błąd zliczania. Muszę się przyznać że sam jestem winien, błąd to Option Explicit w dwu kartach module. Poprostu miałem bałagan w makrach. Pomogły mi twije sugestia. Dzięki.
Jednak przesyłam arkusz z makrami, oczywiście przetworzony wybiurczo z całości, a proszę teraz o tą drugą kwestie z wybieraniem powtórnym tego samego elementu i zatwierdzaniem ENTEREM. Proszę sprawdzić, zostawiłem dwie pozycje na liście rozwijanej dla sprawdzenia.

Pozdrawiam
_________________
jmisiek
ID posta: 833 Skopiuj do schowka
 
 
m.janusz 
Fan Excela


Posty: 79
Wysłany: 28-12-2006, 19:26   Problem z makrem czyszczącym wpisy.

Coś nie załadowało pliku.3
poprawiam.

Zeszyt1-JM1.rar
Pobierz Plik ściągnięto 871 raz(y) 47.69 KB

_________________
jmisiek
ID posta: 834 Skopiuj do schowka
 
 
Tajan


Pomógł: 5618 razy
Posty: 12152
Wysłany: 28-12-2006, 20:50   

Takie zachowanie jest normalne. Skoro wartość kombo nie zmienia się, to makro nie jest uruchamiane. Być może zadowoli Cię następująca zmiana w makrze przypisanym do formantu:
Kod:

Sub Makro9()
   
    Dim Pozycjoner, ilość As Integer, Inny As String
    Dim nazwa As String
   
    nazwa = Application.Caller
   
    If ActiveSheet.DropDowns(nazwa).Value = 0 Then Exit Sub
   
    Application.ScreenUpdating = False
   
    If (ActiveCell.Column = 2) And (ActiveCell.Row > 13 And ActiveCell.Row < 43) Then
        Pomocnik = Sheets("Baza danych (3)").Range("G1")
        Makrogruby
        Pozycjoner = Sheets("Baza danych (3)").Range("F1")
        Application.CutCopyMode = False
        Select Case Pozycjoner

           Case 1
                Makro9_4
              '  sygnał = 1
            Case 2
                Makro9_5
                ActiveCell.Offset(-1, 0).Activate
                sygnał = 1
           
            End Select
   
    Else: MsgBox "Błędna pozycja kursora"
        End If
        ActiveSheet.DropDowns(nazwa).Value = 0
End Sub

Powoduje ona, że pole komba jest po wybraniu wartości jest czyszczone i w związku z tym zawsze zachodzi zmiana jego wartości przy wyborze z listy.
Jeżeli to rozwiązanie z jakichś wzgledów Ci nie odpowiada, to trzeba będzie zmienić rodzaj kontrolki i użyć pola kombi z paska "Przybornik formantów", które daje się lepiej konfigurować.

Pozdrawiam
ID posta: 837 Skopiuj do schowka
 
 
m.janusz 
Fan Excela


Posty: 79
Wysłany: 29-12-2006, 18:51   Problem z makrem czyszczącym wpisy.

Dzięki serdeczne, jestem zadowolony.

Pozdrawiam
_________________
jmisiek
ID posta: 853 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe