Страница: 1 |
Страница: 1 |
Вопрос: Формула с числами.
Добавлено: 15.07.08 10:25
Автор вопроса: KiZ
Вопрос такой: В первой ячейке A1 находится число. Во второй ячейке A2 тоже число. Как сделать так, чтобы в третьей была ФОРМУЛА числа, через сумму двух чисел.
Т.е. 18, 20
=18+20 и притом отображалось 38, но по формуле именно =18 + 20.
Вот как я сделал, но это не работает, если если числа не целые(( почему-то не хочет распозновать точку, а в строке Stringall присваивает запятую, как разделитель.
Как это исправить?
For l = 1 To m
Str1 = Cells(l + 1, 1)
Str2 = Cells(l + 1, 2)
StringAll = "=" & Str1 & "+" & Str2
'в следующей строке выдает ошибку, если числа не целые
Cells(l + 1, 3) = StringAll
Next l
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
KiZ
Вопросов: 27
Ответов: 68
Профиль | | #1
Добавлено: 15.07.08 11:02
Что-то я плохо подумал)) оказалось все просто:
Sub lom()
m = 3
For l = 1 To m
Str1 = Cells(l + 1, 1)
Str2 = Cells(l + 1, 2)
Str1 = Replace(Str1, ",", "."
Str2 = Replace(Str2, ",", "."
StringAll = "=" & Str1 & "+" & Str2
Cells(l + 1, 3) = StringAll
Next l
End Sub
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 15.07.08 13:17
Плохо подумал, да. На некоторых виндах десятичным разделителем является запятая, и этот код работать тоже не будет
Номер ответа: 3
Автор ответа:
KiZ
Вопросов: 27
Ответов: 68
Профиль | | #3
Добавлено: 15.07.08 13:40
мдя. это я действительно плохо подумал) блин и как же быть? можно программно поставить разделителем десятичной части точку?
Номер ответа: 4
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #4
Добавлено: 15.07.08 13:47
Разделитель кажись устанавливается в настройках 'Панель управления' - 'Дата, время, язык и региональные стандарты', Следовательно он есть в реестре.
Номер ответа: 5
Автор ответа:
KiZ
Вопросов: 27
Ответов: 68
Профиль | | #5
Добавлено: 15.07.08 15:01
Да это понятно. Только с реестром программно я не работал не разу) и боюсь))
Ну если вдруг на другом компе будет, то ведь можно типо сообщения написать: "Внимание! Проследите, чтобы разделителем была точка!" )))
ну а там Да/Нет. Если нет, то выход.... ну или как-то так...
Номер ответа: 6
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #6
Добавлено: 15.07.08 15:11
Попробуй вот так:
TimeDelimiter = Mid$(Format(0.5, "Long Time", 3, 1)
DecimalDelimiter = Mid$(Format(1.1, "General Number", 2, 1)
Номер ответа: 7
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #7
Добавлено: 15.07.08 15:14
А еще можно так:
MsgBox "The date separator is " & A
A = Application.International(xlTimeSeparator)
MsgBox "The time separator is " & A
A = Application.International(xlDecimalSeparator)
MsgBox "The decimal separator is " & A
Очень удобно. Сделал проверку, заменил на что нужно и сообщение не нужно.
Номер ответа: 8
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #8
Добавлено: 16.07.08 01:16
Кто-то делал еще проще. Кажется ЮЮ.
Вроде так:
щас не могу проверить - нет ВБ. на форуме было месяц назад.
Номер ответа: 9
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #9
Добавлено: 16.07.08 06:06
Согласна, но это получается как переменная. А я читаю системные настройки разделителей.
Номер ответа: 10
Автор ответа:
KiZ
Вопросов: 27
Ответов: 68
Профиль | | #10
Добавлено: 16.07.08 10:11
Как я понимаю, Jasmin предложила узнать разделитель.. а можно ли его как-нить подправить/поставить другой из макроса?
Номер ответа: 11
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #11
Добавлено: 16.07.08 10:36
А зачем? Ну замени в своих ячейках твой разделитель на системный.
Номер ответа: 12
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #12
Добавлено: 16.07.08 12:13
Где-то я видела, что можно. Не помню где. Но точно помню, что было написано, что это считается "дурным тоном". Лучше обрабатывать у себя, чем менять системно.
Номер ответа: 13
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #13
Добавлено: 16.07.08 12:40
Наверное так и есть, но например я не знаток правил хорошего тона и точно изменил бы настройки если они мне не нравятся.
В дробях принята запятая, так пусть и будет запятая, помоему это правильно.
Номер ответа: 14
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #14
Добавлено: 16.07.08 13:48
Я тоже не знаток. Но там наверно имели ввиду ситуацию, когда в начале программы поменяли разделитель, отработали и закрылись. А разделитель так и остался поменянным. И другие проги ориентируясь именно на системные настройки "вдруг" перестают работать. Поэтому (лично я) предпочитаю обрабатывать в программе, чем менять настройки. Особенно на тех компах, где не знаешь, какой будет стоят разделитель. Меньше мороки и подгонки.
Номер ответа: 15
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #15
Добавлено: 16.07.08 13:52
Jasmin права. Системные настройки должны менять системные программы. А мы должны обрабатывать все самостоятельно, на то мы и программисты.