--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
I już
PiotrB
Użytkownik <dav...@poczta.onet.pl> napisał w wiadomości
news:4cc1.000009...@newsgate.onet.pl...
Mozesz uzyc tego makra
zmienia nale na duze litery z zaznaczonego odszaru
Sub ZmienText()
Dim Tekst As String, Komorka As Range
For Each Komorka In Selection
If Komorka <> "" Then
Tekst = Komorka
Tekst = UCase(Tekst)
Komorka = Tekst
End If
Next Komorka
End Sub
Janusz
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Offset(-1, 0) = UCase(Target.Offset(-1, 0))
End Sub
zamieni małe litery na duże jeśli zatwierdzisz wpis enterem (i jesli
przechodznie enterem masz ustawione w dół).
Jakby co moge ci wysłac taki plik na mail.
pozdr.
Tak, to prawda, lecz jeśli zaczniesz poruszać się po arkuszu klikając w jakieś komórki lub używając strzałek czy klawisza TAB -
skutki działania tego makra mogą być nieprzewidziane. Lepiej umieścić podobny kod w zdarzeniu Worksheet_Change jak poniżej:
Private Sub Worksheet_Change(ByVal Target As Range)
Target = UCase(Target)
End Sub
Piszę z pamięci, więc proszę o dokładne sprawdzenie działania tego makra, ponieważ nie mam pod ręką Excela, w szczególności
przypadku, gdy obiekt Target składa się z wielu komórek (np. przy wklejaniu jakiejś wartości do kilku komórek na raz). Być może
wtedy należy użyć pętli - poniższe makro wklejone do modułu powinno wtedy zadziałać:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Taget.Count > 1 Then
For i = 0 To Target.Count - 1
Target(i) = UCase(Target(i))
Next
Else
Target = UCase(Target)
End If
End Sub
Oczywiście jeden z powyższych kodów powinnieś umieścić w module jakiegoś arkusza. Jeśli chcesz, aby makro dotyczyło całego
skoroszytu wklej do modułu ThisWorkbook poniższe makro:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim i As Long
If Source.Count > 1 Then
For i = 0 To Source.Count - 1
Source(i) = UCase(Source(i))
Next
Else
Source = UCase(Source)
End If
End Sub
--
Pozdrowienia
px...@poczta.onet.pl