ďťż
Lemur zaprasza
Strona: [ > ] z 1 Autor Temat: Problem z funkcyjką bogdan57 Typ: neutral Postów: 2 Zarejestrowany: Feb 2004 Problem z funkcyjką Witam i zaczynam od prośby o pomoc Wypociłem funkcję sprawdzającą poprawność numeru NIP: Function NIP1(numer) As String Dim suma, i As Integer Dim waga(9), kod, Tnip As String kod = Mid(numer, 1, 9) waga(1) = 6 waga(2) = 5 waga(3) = 7 waga(4) = 2 waga(5) = 3 waga(6) = 4 waga(7) = 5 waga(8) = 6 waga(9) = 7 suma = 0 If Len(numer) = 10 Then For i = 1 To 9 suma = (waga(i) * (Mid(kod, (i), 1))) + suma Next i Tnip = kod & (suma Mod 11) If Tnip = numer Then 'jeżeli tak NIP1 = "PRAWDA"' lub "T" a = 3 Else NIP1 = "FAŁSZ" ' lub "N" a = 5 End If Else NIP1 = "niewłaściwa ilość cyfr" End If Selection.Font.ColorIndex = a ' to nie działa Selection.Font.Bold = True ' to nie działa End Function 1. Mój problem zaczyna się przy formatowaniu komórki. Format czcionki pozostaje bez zmian. Jak to przeskoczyć? 2. Application.Volatile (True)'czy to jest niezbędne i kiedy ma zastosowanie? _____________________________________________ bogdan57 24-02-2004 00:08 losmac "profesorek" Typ: neutral Postów: 758 Zarejestrowany: May 2003 formatowanie komórek Wbrew powszechnemu mniemaniu nie jest to trudne. Selection.Font.Bold = True 'źle Aby sformatować aktywną komórkę wystarczy: Sub FormatKomorekA() ActiveCell = "a" ActiveCell.Interior.ColorIndex = 3 ActiveCell.Font.Bold = True End Sub Aby sformatować dowolną komórkę wystarczy: Sub FormatKomorekB() Dim rng as Range Set rng = ActiveSheet.Range("A1" With rng .Interior.ColorIndex = 3 .Font.Bold = True End With End Sub _____________________________________________ POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś 24-02-2004 21:37 losmac "profesorek" Typ: neutral Postów: 758 Zarejestrowany: May 2003 Tu masz sprawdzoną i lekko zmienioną funkcję. Zapewniam, że DZIAŁA! Sub TestNIPa() Dim retVal As Boolean retVal = NIP1("Tutaj Daj NIP" If retVal Then 'jeżeli tak ActiveCell.Interior.ColorIndex = 3 ActiveCell.Font.Bold = True Else ActiveCell.Interior.ColorIndex = 5 ActiveCell.Font.Bold = False End If End Sub Function NIP1(numerNIP As String) As Boolean Dim a As Long, suma, i As Long Dim waga(9) As Long Dim kod As String, Tnip As String kod = Mid(numerNIP, 1, 9) waga(1) = 6 waga(2) = 5 waga(3) = 7 waga(4) = 2 waga(5) = 3 waga(6) = 4 waga(7) = 5 waga(8) = 6 waga(9) = 7 suma = 0 NIP1 = False If Len(numerNIP) < 10 Then Exit Function For i = 1 To 9 suma = (waga(i) * (Mid(kod, (i), 1))) + suma Next i Tnip = kod & (suma Mod 11) If Tnip = numerNIP Then NIP1 = True End Function [Post edytowany dnia 26-02-2004 21:18 przez losmac] _____________________________________________ POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś 26-02-2004 21:17 karolinavb Typ: neutral Postów: 467 Zarejestrowany: Jan 2003 Problem z funkcyjką - volatile Dotyczy: Application.Volatile Application.Volatile - metoda obiektu Application , czyni funkcję użytkownika : "ulotną" - to znaczy, ze funkcja jest przeliczana przy zmianie w jakiejkolwiek komórce arkusza ( wywołana z argumentem True lub bez ), albo czyni funkcję "nieulotną" ( wywołana z argumentem False ) - funkcja jest przeliczana tylko wówczas gdy zmienne wejściowe ulegają zmianie. Metoda nie ma żadnego skutku, gdy jest użyta poza funkcją użytkownika wykorzystaną do przeliczania komórki Excela. Argument metody jest opcjonalny, wartość domyślna - True. Zastosowanie tej metody może znacznie zwolnić pracę aplikacji. Obszerne omówienie zastosowania tej metody wraz z rozwiązaniami zastępczymi, znajduje się na stronach - od podrozdziału "Depedency Sequence Problems" oraz Pozdrawiam Karolina _____________________________________________ Karolina 06-03-2004 14:30 Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20 Strona: [ > ] z 1 |