Strona: [  << <   1   > >>  ]  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
Pokaż profil bogdan57  Wyślij email do bogdan57   
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
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
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
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
karolinavb




Typ: neutral
Postów: 468
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 http://www.decisionmodels.com/calcsecretsj.htm - od podrozdziału "Depedency Sequence Problems" oraz http://www.experts-exchange.com/Applications/MS_Office/Excel/Q_20770286.html

Pozdrawiam Karolina


_____________________________________________
Karolina

06-03-2004 14:30
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1