vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest środa, 08 września 2010 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Zmiana formatowania komórki po jej opuszczeniu


otwartyotwarty rozpoczął: crespiom postów: 4



napisał: Rycho
postów: 286


umieszczony:
1 czerwca 2010
22:23

edytowany:
1 czerwca 2010
22:28

  
Hej,
zobacz:
Sub Worksheet_Change(ByVal Target As Range)
    Integrality.Format_Entries (Target(1))
End Sub
===================================
Public Sub Format_Entries(oRng As Range)
  'Nałożenie reguł poprawności wprowadzenia numeru
  Select Case oRng.Address(0, 0)
  Case "A34", "A35", "A36", "A37", "A38", "A39"
    Application.EnableEvents = False
    With oRng
      If (Len(.Value) <> 8) Or (Not IsNumeric(.Value)) Or _
         .Value = "" Then
        .Select
        MsgBox "Wprowadź poprawny numer rachunku (8 cyfr)."
        .ClearContents
      Else
        .NumberFormat = "#### ####"
      End If
    End With
    Application.EnableEvents = True
  End Select
End Sub

Reklama
napisał: crespiom
postów: 43


umieszczony:
1 czerwca 2010
18:01

  
Dzięki ale niestety nie działa.
napisał: ml
postów: 13


umieszczony:
3 kwietnia 2010
15:14

  
Spróbuj tak:

Sub Worksheet_Change(ByVal Target As Range)
    Integrality.Format_Entries Target.Address ' tu zmiana
End Sub


Funkcję format_entieries jest zmieniona na funkcję z parametrem, którym jest adres zmienianej komórki. I dalej

Public Sub Format_Entries(adrAdres As String)  ' tu zmiana
    
Select Case adrAdres ' tu zmiana

'Nałożenie reguł poprawności wprowadzenia numeru
Case "$A$34", "$A$35", "$A$36", "$A$37", "$A$38", "$A$39"
On Error GoTo InvalidEntry
Application.EnableEvents = False
    With ActiveCell
        If Len(.Value) <> 8 Or IsNumeric(.Value) = False Then
            Err.Raise 0
        Else: .NumberFormat = "#### ####"
        End If
    End With
Application.EnableEvents = True
Exit Sub
InvalidEntry:
    MsgBox "Wprowadź poprawny numer rachunku (8 cyfr)."
    Range(adrAdres).Activate ' tu zmiana
Application.EnableEvents = True

End Select

End Sub

Reklama
napisał: crespiom
postów: 43


umieszczony:
9 marca 2010
16:06

  
Cześć,

Mam problem jw. Napisałem kod jednak zmiana formatownia odbywa się jedynie po naciśnięciu ENTER. Chciałbym natomiast aby formatowanie odbywało się po opuszczeniu komórki za każdym razem.

Oto kod:
W arkuszu umieśliłem odwołanie do modułu
Sub Worksheet_Change(ByVal Target As Range)
    Integrality.Format_Entries
End Sub



A w module mam:
Public Sub Format_Entries()
    
Select Case ActiveCell.Address

'Nałożenie reguł poprawności wprowadzenia numeru
Case "$A$34", "$A$35", "$A$36", "$A$37", "$A$38", "$A$39"
On Error GoTo InvalidEntry
Application.EnableEvents = False
    With ActiveCell
        If Len(.Value) <> 8 Or IsNumeric(.Value) = False Then
            Err.Raise 0
        Else: .NumberFormat = "#### ####"
        End If
    End With
Application.EnableEvents = True
Exit Sub
InvalidEntry:
    MsgBox "Wprowadź poprawny numer rachunku (8 cyfr)."
    ActiveCell.Value = Null
Application.EnableEvents = True

End Select

End Sub



Dodatkowo chciałbym aby po wpisaniu błędnego numeru pojaiwł się odpowiedni komunikat a następnie aktywowało się pole komórki celem korekty błędu w ten sposób aby błędnie wpisany ciąg nadal się w nim znajdował. Ostatecznie po korekcie powinna znowu uruchomić się procedura sprawdzenia poprawności danych.

Będę wdzięczny za pomoc.

Pozdrawiam


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z