Почему код ниже преобразует текстовое значение в числовое:
т.е. заменяет точку на запятую, причем принудительный перевод в текстовый режим не срабатывает, хоть сколько вложи cstr, как только VBA увидит, к примеру связку "1.1" он сразу в ячейке ее сделает как 1,1
код ниже выводит | Должен выводить |
I 1 1,1 0,2 0,3 0,4 2 | I 1 1.1 1.2 1.3 1.4 2 |
Код |
---|
Sub Протянуть_нумерацию() On Error Resume Next Dim Ch, Lh, Nh, P Dim CRed, CBlue, CDBlue, Cwhite Ch = 0 Nh = 0 Lh = 0 P = 0 CRed = RGB(255, 200, 180) CBlue = RGB(221, 235, 247) CDBlue = RGB(184, 204, 228) Cwhite = RGB(255, 255, 255) For i = 15 To 20 Application.StatusBar = i If Cells(i, "D").Interior.Color = CDBlue Then Nh = Nh + 1 Ch = WorksheetFunction.Roman(Nh) Cells(i, "D") = Ch Else If Cells(i, "D").Interior.Color = Cwhite Then Lh = Lh + 1 Cells(i, "D") = Lh Else If Cells(i, "D").Interior.Color = CBlue Then If Cells(i, "D").Interior.Color <> Cells(i - 1, "D").Interior.Color Then _ Cells(i, "D") = CStr(Cells(i - 1, "D")) & "." & CStr(Right(Cells(i - 1, "D"), 1)) Else Cells(i, "D") = CStr(Left(Cells(i - 1, "D"), Len(Cells(i - 1, "D")) - 3)) & "." & _ CStr(Right(Cells(i - 1, "D"), 1) + 1) End If End If End If Next Application.StatusBar = False End Sub |