ID tematu: 161
 |
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
|
|
|
 |
|
|
|
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
Pozdrawiam |
_________________ Trebbor@wp.pl |
|
 | ID posta:
820
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
|
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
|
|
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
|