If Then в одной строке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

If Then в одной строке

Сообщение alleonid » 08.10.2006 (Вс) 18:24

Только не убивайте меня сразу!!! Вопрос простой, но я новичек. Честно искал ответ, но в общем - планида что ли такая - иду сдаваться :cheers: . От прелюдии перехожу к вопросу.
Я копирую фрагменты кода из Книги Excel и мне было бы весьма удобно, чтобы выражение:
Код: Выделить всё
If Combo2.ListIndex = 25 And Combo1.ListIndex = 0 Then
A = 55.04
J=55.6
End If


было записано в одной строке. Смутно помню, что если все наоборот, хочешь чтобы перенести без переноса, то надо писать &_

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 08.10.2006 (Вс) 18:41

Код: Выделить всё
If Combo2.ListIndex = 25 And Combo1.ListIndex = 0 Then A = 55.04 : J=55.6


А вообще говоря, нефига экономить строки нужно писать на нескольких строках даже там, где можно писать на одной - гораздо удобнее работать.

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 08.10.2006 (Вс) 18:45

Спасиба. Дай Вам Бог здоровичка :!:

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Re: If Then в одной строке

Сообщение lister » 09.10.2006 (Пн) 3:02

alleonid писал(а):От прелюдии перехожу к вопросу.


Обалденно!!! :) Представляете, у нас на форуме уже так :) Без прелюдий не обойтись :)

Можно в цитаты???

Гы... :P

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Re: If Then в одной строке

Сообщение alleonid » 10.10.2006 (Вт) 8:51

Почтенные знатоки VB :!: Вы соль земли :!:
Раз уж вы меня пока оставили жить, то
вот есть такое явление:
если a<1,
например a=0.81
то Str(a) записывается в отчете как .81
(т.е. ноль исчезает).
Можно конечно иф-дзеном добавить этот самый грешный ноль ...
А может можно как нибудь проще :?:

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 10.10.2006 (Вт) 9:07

а что Format$ уже не рулит
Dmitrich

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 10.10.2006 (Вт) 9:58

Dmitriy2003 писал(а):а что Format$ уже не рулит


при этом слове вспоминается проваленный еще при коммунизме экзамен по Fortran -у.
:D Вот - написал детсадовскую функцию, только она пробел лишний оставляет перед точкой, ну да ладно.

Код: Выделить всё
Function Strz(x As Double)
Strz=Str(x)
If Abs(x) < 1 Then Strz = "0" & Str(x)
End Function

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 10.10.2006 (Вт) 10:06

видать таки не рулит Format то...

вот те примерчик от доброты душевной

Код: Выделить всё
Dim d As Double
d = 0.81
Debug.Print Format$(d, "0.##")
Весь мир матрица, а мы в нем потоки байтов!

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 10.10.2006 (Вт) 10:21

for i=0 to 1000000

format$(d,"0.##") - 4,0583
strz(d) - 7,7535

это даже не велосипед - это самокат ржавый
Dmitrich

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 10.10.2006 (Вт) 10:43

Спасибо. Учу матчать, чорт бы ее побрал :cry:

Код: Выделить всё
Sub Text1_Change()

d = Val(Text1.Text)
Print
Label1.Caption = Format$(d, "0.##")


End Sub



Код: Выделить всё
Function Strz(x As Double)
Strz = Str(x)
If Abs(x) < 1 Then Strz = Format$(x, "0.###")
If Abs(x) >= 1 Then Strz = Str(Round(x, 2))
End Function


PS Извините, я думал такя же фигня как с функцией типа "минимум", в свое время был удивлен, что в VB ее дописывать надо.
Последний раз редактировалось alleonid 10.10.2006 (Вт) 12:43, всего редактировалось 1 раз.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 10.10.2006 (Вт) 11:25

Опять мимо. Не нужна тебе никакая функция Strz. Просто в самой начальной задаче вместо Str(a) пишешь Format$(a,"0.##").
Быть... или не быть. Вот. В чём вопрос?

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 10.10.2006 (Вт) 12:44

uhm писал(а):Опять мимо. Не нужна тебе никакая функция Strz. Просто в самой начальной задаче вместо Str(a) пишешь Format$(a,"0.##").


Да, но ... функция вроде как работает. И меньше букаф. Я уже навводил Str - мне "z" удобнее добавить. В общем всем спасибо, я пишу 1 программку в год, и потому никак не обучусь толком. Но, что касается моей функции, все же я свободный человек, в свободной стране и, извините: [модератор: не извиним].

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: If Then в одной строке

Сообщение HandKot » 10.10.2006 (Вт) 15:31

alleonid писал(а):, то
вот есть такое явление:
если a<1,
например a=0.81
то Str(a) записывается в отчете как .81
(т.е. ноль исчезает).
Можно конечно иф-дзеном добавить этот самый грешный ноль ...
А может можно как нибудь проще :?:


можно стандартную ф-цию CStr использовать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.10.2006 (Вт) 21:04

alleonid писал(а):Да, но ... функция вроде как работает. И меньше букаф.

Какое забавное существо...
Если она работает, то почему же возник данный топик?
Кстати, ты не пробовал свою функцию с отрицательными числами? А с логическими значениями? Попробуй.
Lasciate ogni speranza, voi ch'entrate.

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 11.10.2006 (Ср) 7:07

alibek писал(а):Если она работает, то почему же возник данный топик?
Кстати, ты не пробовал свою функцию с отрицательными числами? А с логическими значениями? Попробуй.


Вопрос изначально возник, ибо я не знал как это делать. Поиск рулит не всегда, да и фразу для поиска не всегда хватает ума сконструировать. Добрый !Viper! мне подсказал про Format$. Функция, построенная на основе этой штуки в конечном варианте работает как надо. CStr я не тестировал, т.к. программа слишком мелкая и неответственная и следующую я напишу нескоро. Всем спасибо.

PS Что то в последнее время к новичкам на vbstreets отношение стало пренебрежительное. Или я не там вопрос пишу? Я уж выбираю слова и так и так, чтобы продвинутые пользователи вставили строчку кода в подмогу. Сурово посылают на MSDN и в матчасть. Не иначе как активисты повзрослели, нарожали деток и озабочены теперь их содержанием?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.10.2006 (Ср) 7:50

Поскольку я оказывается добрый, то...

Здесь задается вопрос, непосредственно в следующем посте дается ответ. Спрашивается почему в следующем после ответа посте изобретается велосипед? Ответ может быть только один: автор не потрудился выяснить, что же это такое за функция такая Format. Справку не судьба посмотреть?

О активистах, озабоченность содержанием деток несомненно у кого-то имеет место быть, но причем тут VBStreets и новички? Все гораздо проще: когда человек в n-ый раз видит один и тот же, причем примитивный вопрос, то его это раздражает и .... "В поиск, в гугл, MSDN и матчасть... " И что характерно необходимомть использовать поиск и MSDN это прописана в правилах!

Как то вот так...

З.Ы. А CStr стоит проверить таки... да и вообще помнить о ее существовании
Весь мир матрица, а мы в нем потоки байтов!

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 11.10.2006 (Ср) 10:53

!Viper! писал(а):З.Ы. А CStr стоит проверить таки... да и вообще помнить о ее существовании


'Большое спасибо за помощь!

:flower:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList