Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[Excel] Format wprowadzanych danych do TextBox'a

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Oprogramowanie biurowe
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
sakee5



Dołączył: 27 Mar 2019
Posty: 5

PostWysłany: Sro Mar 27, 2019 11:28 am  OP    Temat postu: [Excel] Format wprowadzanych danych do TextBox'a Odpowiedz z cytatem Pisownia

Hej,

Stoj? przed problemem jakim jest oprogramowanie TextBox'a aby pozwala? na wprowadzenie warto?ci typu 0000/00 a innych nie akceptowa?. Dane maj? by? traktowane jako tekst oczywi?cie. Pierwsze 4 zera maj? by? traktowane jako liczby i litery, a znaki po operatorze to liczby np 01Z1/15

Czy mo?na te? zrobi? taki myk, ?e podczas wprowadzania danych przez u?ytkownika vba samo wstawi "/" po 4 pierwszych znakach?

Prosz? o pomoc. Niestety nie znalaz?em rozwi?zania mojego problemu na forum.

Pozdrawiam
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
losmac



Dołączył: 25 Maj 2005
Posty: 1565
Skąd: Bia?ystok

PostWysłany: Sro Mar 27, 2019 11:28 pm      Temat postu: Odpowiedz z cytatem Pisownia

To nie jest w?a?ciwe rozwi?zanie lecz pewna idea, pomys? do poprawki, ulepszenia.

Kod:

Option Explicit

Sub Test()

    Dim sInput As Variant
    Dim i As Integer
    Dim s As String
    Dim retVal As String
    
    'przyk?adowe ci?gi wej?ciowe
    sInput = Array("01234/12", "A2B4/c3", "X;2-/.0", "p32;/5l")
    
    'sprawdzenie w p?tli ka?dego z nich
    For i = LBound(sInput) To UBound(sInput)
        s = sInput(i)
        retVal = GetValidData(s)
        MsgBox s & vbCr & _
            retVal, vbInformation, "Informacja"
    Next

End Sub

'wymaga referencji do MS VisualScript Regular Expressions 5.0
Function GetValidData(sData As String) As String

    Dim oRegex As VBScript_RegExp_55.RegExp
    Dim sPattern As String, sRetVal As String
    Dim bMatch As Boolean
    
    sRetVal = "0000/00"
    sPattern = "([A-Za-z0-9]{4})/([A-Za-z0-9]{2})"
    
    Set oRegex = New VBScript_RegExp_55.RegExp
    With oRegex
        .Pattern = sPattern
        .MultiLine = False
        bMatch = .Test(sData)
    End With
    Set oRegex = Nothing
    
    'je?li ci?g pasuje do szablonu, zwró? wej?ciowy string, w przeciwnym wypadku - domy?ln? warto??: "0000/00"
    GetValidData = IIf(bMatch, sData, sRetVal)
    
End Function



Uwaga!
Je?li w ci?gu mog? znajdowa? si? tylko du?e litery i cyfry wystarczy zmodyfikowa? zmienn? sPattern w ten sposób:
Kod:
sPattern = "([A-Z0-9]{4})/([A-Z0-9]{2})"


Zmodyfikuj funkcj? do swoich potrzeb!

Powodzenia!

_________________
ksi??ka o VBA dla Office'a
UWAGA! Nie odpowiadam na PW, je?eli wcze?niej nie zosta?o to ze mn? ustalone w ramach konkretnego w?tku!
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
sakee5



Dołączył: 27 Mar 2019
Posty: 5

PostWysłany: Czw Mar 28, 2019 10:43 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Super. dzi?ki za odpowied?! :) zajm? si? tym za chwil?.

Teraz mam inny problem. Jak sprawi? aby VBA wykrywa?o pierwsza woln? komórk? w tabeli wstawionej poprzez Excela pomi?dzy wierszem sumy a wierszem gdzie s? jakie? dane.

Przyk?adowo: od A1 do A18 mam dane. od A19 do A25 sa puste komórki a w A26 jest wiersz sumy podliczaj?cy dane.

Jak wsadzi? warto?ci do komórki A19 itd?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
losmac



Dołączył: 25 Maj 2005
Posty: 1565
Skąd: Bia?ystok

PostWysłany: Pią Mar 29, 2019 6:41 am      Temat postu: Odpowiedz z cytatem Pisownia

Nie wiem, czy mo?na "wsadzi?" dane do komórek pomi?dzy ostatni? niepust? a sumuj?c?, bo mo?e to naruszy? integralno?? dotychczasowych danych.

We? pod uwag?, ?e to nie jest prosta sprawa... Mo?esz sprawdzi? formu?? i "przeskanowa?" komórki w poszukiwaniu tych pustych.

_________________
ksi??ka o VBA dla Office'a
UWAGA! Nie odpowiadam na PW, je?eli wcze?niej nie zosta?o to ze mn? ustalone w ramach konkretnego w?tku!
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
sakee5



Dołączył: 27 Mar 2019
Posty: 5

PostWysłany: Pią Mar 29, 2019 2:26 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Uda?o si? wstawi? dane do tabeli stworzonej w Excelu za pomoc? takiego kodu:

Kod:

        Dim the_sheet As Worksheet
        Dim table_list_object As ListObject
        Dim table_object_row As ListRow
        
        Set the_sheet = Sheets("1.2")
        Set table_list_object = the_sheet.ListObjects("WDW_1_2")
        Set table_object_row = table_list_object.ListRows.Add
        
        table_object_row.Range(1, 3).Value = "jakie? dane"



Oczywiscie to tylko pocz?tek, ale kod dzia?a. Stwierdzi?em, ?e lepiej zmieni? tabel? w Excelu tak aby makro mog?o doda? nowy wiersz i tam dane, które wprowadzi u?ytownik w formularzu.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7930

PostWysłany: Pią Mar 29, 2019 8:35 pm      Temat postu: Odpowiedz z cytatem Pisownia

A je?li chodzi o TextBox to skoro to ma by? zawsze 4/2- znaki/liczby, czy nie pro?ciej pos?u?y? si? w tym przypadku 2 kontrolkami TextBox:
- kontrolka Textbox pozwalaj?ca wpisa? tylko 4 znaki: MaxLength Property
- kontrolka Textbox pozwalaj?ca wpisa? tylko 2 znaki: MaxLength Property + ograniczenie tylko cyfry
A miedzy nimi na Userform etykieta z uko?nikiem
I zestawi? w kodzie wynik w tych kontrolek zamiast m?czy? usera?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
losmac



Dołączył: 25 Maj 2005
Posty: 1565
Skąd: Bia?ystok

PostWysłany: Pią Mar 29, 2019 10:06 pm      Temat postu: Odpowiedz z cytatem Pisownia

karolinavb napisał:
A je?li chodzi o ..., czy nie pro?ciej pos?u?y? si? w tym przypadku 2 kontrolkami TextBox:
...
I zestawi? w kodzie wynik w tych kontrolek zamiast m?czy? usera?


I jak, Karolinko, odmówi? Ci logiki?

Niemniej jednak, powiem tak: to zale?y... :) Aczkolwiek i tak nie unikniesz sprawdzania poprawno?ci wprowadzonych danych... Wi?c po co to robi? 2 razy?

_________________
ksi??ka o VBA dla Office'a
UWAGA! Nie odpowiadam na PW, je?eli wcze?niej nie zosta?o to ze mn? ustalone w ramach konkretnego w?tku!
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7930

PostWysłany: Sob Mar 30, 2019 6:37 am      Temat postu: Odpowiedz z cytatem Pisownia

losmac napisał:
...
tak nie unikniesz sprawdzania poprawno?ci wprowadzonych danych... Wi?c po co to robi? 2 razy?
Tylko 1-den raz "ograniczenie tylko cyfry " dla 2-go TextBox (o ile pami?tam jest na forum)...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
sakee5



Dołączył: 27 Mar 2019
Posty: 5

PostWysłany: Wto Kwi 16, 2019 12:11 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzi?ki Karolinavba za pomoc. Wszystko dzia?a.

Teraz mam pytanie odno?nie czyszczenia formularza po kliknieciu przycisku wprowadz albo anuluj. Niestety vba w tym momencie zapamietuje dane.

Jest mo?liwo?? wyczyszczenia ca?ego formularza w takich sytuacjach?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7930

PostWysłany: Sro Kwi 17, 2019 6:21 am      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
Niestety vba w tym momencie zapamietuje dane
Nie rozumiem, co masz na my?li?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Oprogramowanie biurowe Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
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
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.24634 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |