napisał: Trebor postów: 1209
umieszczony: 19 marca 2008 20:18
|
|
Trochę namieszam, ale może ktoś wpadnie do wątku i uprości kod
Private Sub TextBox1_Change()
Dim i As Integer, a As String
'oczyść ciąg
TextBox1.Text = WorksheetFunction.Clean(TextBox1.Text)
'usuń znaki spoza ciągu "1234567890,"
For i = Len(TextBox1.Text) To 1 Step -1
If InStr(1, "1234567890,", Mid(TextBox1.Text, i, 1)) = 0 Then
TextBox1.Text = Left(TextBox1.Text, i - 1) & Right(TextBox1.Text, Len(TextBox1.Text) - i)
End If
Next i
'usuń przecinek(ki) jeśli więcej niż jeden
For i = 1 To Len(TextBox1.Text) - Len(Replace(TextBox1.Text, ",", "")) - 1
If Mid(TextBox1.Text, TextBox1.SelStart, 1) = "," Then
a = TextBox1.Text
Mid(a, TextBox1.SelStart, 1) = " "
TextBox1.Text = a
i = i + 1
End If
If Len(TextBox1.Text) - Len(Replace(TextBox1.Text, ",", "")) > 1 Then TextBox1.Text = Replace(TextBox1.Text, ",", "", 1, 1)
Next i
'usuń znak(i) jeśli jest ich więcej niż dwa po przecinku
If InStr(1, TextBox1.Text, ",") > 0 Then TextBox1.Text = Left(TextBox1.Text, InStr(1, TextBox1.Text, ",") + 2)
End Sub
Co do drugiego to też podobnie:
Dim zmienna, i As Integer, zmienna2 As String
zmienna = Range("A1") 'pobranie stringu
For i = 1 To 3
If i <> 3 Then zmienna2 = zmienna2 & Mid(zmienna, 1, InStr(1, zmienna, ","))
zmienna = Mid(zmienna, InStr(1, zmienna, ",") + 1, 1000)
Next
zmienna2 = zmienna2 & zmienna
MsgBox zmienna2
Pozdrawiam |
|
napisał: Józef B postów: 6
umieszczony: 18 marca 2008 08:57
|
|
Dzięki, kod działa.
Jedna tylko rzecz: przy kasowaniu przecinków dzieje się tak ze chronologicznie pierwszy zostaje skasowany. Chciałbym żeby to nowy znak został usunięty..
Gdzie znajdę jakiś artykuł o operacjach na stringach? Chętnie sam bym pokombinował bo mam wiecej prolemów...
Mam plik .csv a takij postaci
Type,"FirstName","LastName","Mobile","Home","Office","Fax","Other","Email","URL","Note"
-1,"POCZTA","","","*501","","","","","",""
...
nagłówek i po kolei adresy.. problem w tym że wszystkie telefony zamieniły sie z Mobile na Home...
Jak wyedytować string z -1,"POCZTA","","","*501","","","","","","" na -1,"POCZTA","","*501","","","","","","","" dla każdego wiersza (prawie 1000). Zamiana nagłówka nie działa. |
|
napisał: Trebor postów: 1209
umieszczony: 15 marca 2008 12:47
|
|
Moim zdanie najlepiej nie pozwolić użtkownikowi na dowolność wpisywania. Jeśli chcemy, aby można było wpisywać tylko liczby z przecinkiem, spróbujmy tak napisać kod, aby nie pozwolił na nic innego.
Większość takich kodów wykorzystuje przyciśnięcia klawiszy do analizy czy znak jest właściwy.
Postanowiłem wykorzystać zdarzenie zmiany dla textboxa. Zawartość textboxa jest analizowana każdorazowo jako cały ciąg, a nie tylko wprowadzany znak. Taki mój kaprys.
Private Sub TextBox1_Change()
Dim i As Integer
'oczyść ciąg
TextBox1.Text = WorksheetFunction.Clean(TextBox1.Text)
'usuń znaki spoza ciągu "1234567890,"
For i = Len(TextBox1.Text) To 1 Step -1
If InStr(1, "1234567890,", Mid(TextBox1.Text, i, 1)) = 0 Then
TextBox1.Text = Left(TextBox1.Text, i - 1) & Right(TextBox1.Text, Len(TextBox1.Text) - i)
End If
Next i
'usuń przecinek(ki) jeśli więcej niż jeden
For i = 1 To Len(TextBox1.Text) - Len(Replace(TextBox1.Text, ",", "")) - 1
If Len(TextBox1.Text) - Len(Replace(TextBox1.Text, ",", "")) > 1 Then TextBox1.Text = Replace(TextBox1.Text, ",", "", 1, 1)
Next i
'usuń znak(i) jeśli jest ich więcej niż dwa po przecinku
If InStr(1, TextBox1.Text, ",") > 0 Then TextBox1.Text = Left(TextBox1.Text, InStr(1, TextBox1.Text, ",") + 2)
End Sub
Pozdrawiam |
|
napisał: Józef B postów: 6
umieszczony: 11 marca 2008 12:17
|
|
A co zrobić jeśli nie wiem jaką wartość wprowadź użytkownik?
W formularzu może wpisać i kropke i przecinek a ja chce żeby to była zawsze liczba
Range("A1").Value = CDbl(TextBox1.Text)
powyższy kod wywala błąd jeśli ktoś poprawnie wpisze liczbę..
Gdzie znajdę instrukcje jak rozpoznawać czy jest to tekst czy liczba i zamieniać w tę i we wtę?
Jak napisać ograniczenie do dwóch miejsc po przecinku lub kropce (działające podczas wpisywania w textbox)? |
|
napisał: baq postów: 6
umieszczony: 5 kwietnia 2007 12:31
|
|
Mam problem z przecinkiem i kropką w TextBox w Userform. Przykładowo kod działa następująco po wyświetleniu userform w textbox odczytywana jest liczba np. 1,35 z komórki A1. Ta liczba wyświetla się jako 1.35 (z kropką). A tak nie chce, więć daje Replace i mam przecinek. Następnie sugerowaną przez TextBox liczbę zmieniam na np. 1,56 (z przecinkiem). Ukrywam Userform i jednocześnie przekazuje wartość z TextBox do komórki A1 i otrzymuje liczbę w komórce jako tekst a nie jako liczbę, więć znowu muszę użyć Replace by zamienić 1,56 na 1.56 które w arkuszu jest oczytywane jako 1,56.
Proszę napiszcie możę jest jakiś krótszy sposób, może trzeba coś przestawić we właściwościach.
Laik Baq |
|
 wstecz 1 dalej  wszystkich stron: 1
|
|