Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Format, или NumberFormat, или ??? Добавлено: 25.09.04 19:32  

Автор вопроса:  Anry Deriabine
Проблема такая: в Excel 2003
Так заполняются две ячейки:

Randomize Timer
    m1 = Int((19 * Rnd) + 1)
Worksheets("Показания").Cells(14, 2).NumberFormat = m1
Worksheets("Показания").Cells(14, 2).NumberFormat = "00"
+ еще одна переменная

На других листах есть формула: =СЦЕПИТЬ(Показания!B14;".";Показания!C14;"0")

В ячейках с этой формулой должны быть цифры, например: 12.50 ; 05.10 ; 09.80
А пишется: 12.50 ; 5.10 ; 9.80
Как прописать 0 , если перед точкой одна цифра? Может есть другой метод реализации этой задачи?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Anry Deriabine



Вопросов: 14
Ответов: 29
 Профиль | | #1 Добавлено: 25.09.04 22:00
Проблему решил следующим образом:

Randomize Timer
m5 = Int((Rnd * 18) + 2)
a5 = Int((9 * Rnd) + 1)
Worksheets("Показания";).Cells(14, 2) = m5
Worksheets("Показания";).Cells(14, 3) = a5
Worksheets("1";).Cells(27, 2) = Worksheets("Показания";).Cells(14, 2) & "." & Worksheets("Показания";).Cells(14, 3)
Worksheets("1";).Cells(27, 2).NumberFormat = "00.00"

Только в национальных установках пришлось поменять делитель с , на .
Если кто-то знает другое решение, милости прошу, сообщите.

Ответить

Номер ответа: 2
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #2 Добавлено: 06.10.04 13:17
Решение стандартными средствами MS Excel для первоначального вопроса :

=СЦЕПИТЬ(ЕСЛИ(Показания!B14<10;"0"&Показания!B14;Показания!B14);".";Показания!C14;"0";)

=СЦЕПИТЬ(ЕСЛИ(ДЛСТР(Показания!B14=1);"0"&Показания!B14;Показания!B14);".";Показания!C14;"0";)

Примерно тоже самое можно сделать средствами VBA, но нужно ???

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 07.10.04 16:44
ДЛСТР ~ Len(MyString)
Только число сначала преобразовать в стоку и убрать лишний пробел в начале:
Len(Trim$(CStr(MyValue)))

Ответить

Номер ответа: 4
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #4 Добавлено: 07.10.04 18:57
To mc-black
Зачем всё усложнять ? Да ещё и извращаться при этом ? Формулы абсолютно рабочие !!!

Ответить

Номер ответа: 5
Автор ответа:
 Anry Deriabine



Вопросов: 14
Ответов: 29
 Профиль | | #5 Добавлено: 07.10.04 22:42
Переписал по другому:
Убрал формулы с листов и вставил их в код:
Randomize Timer
u1 = Int(Rnd * 90)
n1 = Int(Rnd * 2)
Worksheets("1";).Cells(19, 2) = Worksheets("Показания";).Cells(10, 2) & "." & Worksheets("Показания";).Cells(10, 3)
    Worksheets("1";).Cells(19, 2).NumberFormat = "00.00"
Но все равно требует изменения региональных установок.

Ответить

Номер ответа: 6
Автор ответа:
 Anry Deriabine



Вопросов: 14
Ответов: 29
 Профиль | | #6 Добавлено: 07.10.04 22:43
А, присвоить забыл:
Worksheets("Показания";).Cells(10, 2) = n1
Worksheets("Показания";).Cells(10, 3) = u1

Ответить

Номер ответа: 7
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #7 Добавлено: 07.10.04 23:31
Вот примерный код, без изменения национальных установок. Если Вы работаете с одними и теми ячейками, то можно вручную установить текстовый формат этих ячеек и убрать этот фрагмент кода.

Randomize Timer
u1 = Int(Rnd * 90)
n1 = Int(Rnd * 2)

If Len(u1) = 1 Then u1 = "0" & u1
If Len(n1) = 1 Then n1 = "0" & n1

'************************************************
'Worksheets("Показания";).Cells(10, 3).NumberFormat = "@"
'Worksheets("Показания";).Cells(10, 2).NumberFormat = "@"

Rem только если это нужно

'Worksheets("Показания";).Cells(10, 2) = n1
'Worksheets("Показания";).Cells(10, 3) = u1
'************************************************

Worksheets("1";).Cells(19, 2).NumberFormat = "@"
Worksheets("1";).Cells(19, 2) = n1 & "." & u1

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам