|
TwojePC.pl © 2001 - 2026
|
 |
A R C H I W A L N A W I A D O M O Ś Ć |
 |
| |
|
excel - potrzebna pomoc pilne ogromnie , DeK 21/11/04 11:42 Mam dwa makra do excela ..celem jest kasowanie dziesiętnych gdy uzytkownik do formularza wpisze 46,77 to ucina ,77 i zostaje 46 Uprzedzając niektóre odpowiedzi nei da się tego zrobić z pozycji formatowania komórki w excleu w grę wchodzi tylko makro.
A więc mam dwa makra. Jedno działa wysmienicie obcina dziesiętne i nie pozostawia zera gdy komórka jest pusta.
Ale nie działa z komórkami które są scalone z 2 lub wiecej kolumn.
Drugie makro działa ze scalonymi komórkami ale gdy nie ma danych w komórce to wyświetla się zero..
Moja gorąca prośba to szłozyc z tych 2 przykładów jeden działający poprawnie. Czyli kasujący dziesiętne, działający z komórkami scalonymi z kilku kolumn, i nie wyświetlający zera gdy w komórce nie została wpisana żadna liczba.
Makro 1.
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To Target.Areas.Count
With Target.Areas(i)
For j = Target.Areas(i).Row To Target.Areas(i).Row + Target.Areas(i).Rows.Count
For k = Target.Areas(i).Column To Target.Areas(i).Column + Target.Areas(i).Columns.Count
If k = 1 And j = 1 Then ' k to nr wiersza, j nr kolumny komorki ktora ma byc sprawdzana
If IsNumeric(Application.Cells(j, k)) Then
Application.Cells(j, k).Value = Int(Application.Cells(j, k))
End If
End If
Next k
Next j
End With
Next i
End Sub
oraz makro 2 (to nie dzialające z komórkami scalonymi ale nie wyświetlające zera gdy komórka jest pusta)
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Row = 5) And (Target.Column = 4) Then
If IsEmpty(Target) Then
Target.NumberFormat = ";;"
Else
Target = Fix(Target)
Target.NumberFormat = "0;-0;0"
End If
End If
End Sub- podeślij mi ten dokument na maila... , john565 21/11/04 12:00
to może uda mi sie coś wymyślićf*ck - odp , Zajkos 22/11/04 10:04
to ja napiasłęm makro1 i działa ono z komórkami scalonymi zarówno w poziomie jak i pionie, chyba że część scalonych komórek wychodzi poza zakres ograniczenia
If k = 1 And j = 1 Then ' k to nr wiersza, j nr kolumny komorki ktora ma byc sprawdzana.
Udoskonaliłem troche makro i teraz działa szybciej:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
For i = 1 To Target.Areas.Count
With Target.Areas(i)
For j = Target.Areas(i).Row To Target.Areas(i).Row + Target.Areas(i).Rows.Count
For k = Target.Areas(i).Column To Target.Areas(i).Column + Target.Areas(i).Columns.Count
If k <= 50 And j < 50 Then ' gdzie ma zmieniac, k to nr wiersza, j nr kolumny komorki ktora ma byc sprawdzana
If IsNumeric(Application.Cells(j, k)) And Application.Cells(j, k).Value <> Int(Application.Cells(j, k)) Then
Application.Cells(j, k).Value = Int(Application.Cells(j, k))
End If
End If
Next k
Next j
End With
Next i
End Sub
Z tym że i tak jak zmienisz cały arkusz to bedzie sprawdzał bardzo długo. |
|
|
|
 |
All rights reserved ® Copyright and Design 2001-2026, TwojePC.PL |
 |
|
|
|