Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 613
от 16.09.2007, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 294, Экспертов: 45
В номере:Вопросов: 5, Ответов: 10


Вопрос № 101512: Уважаемые эксперты, помогите с решением простоя задачи. Есть текстовый файл *.txt. Как програмно определить его кодировку и пересохранить в Unicode?...
Вопрос № 101513: Здраствуйте скажите пожалуйста, как можно поделить два числа чтоб при результате числа после комы не считались? НАПРИМЕР 12/5=2,4 , А НУЖНО = 2...
Вопрос № 101520: Здравствуйте. Вопрос по Visual Basic 6.0 что в этом коде не правильно? ..
Вопрос № 101531: Здравствуйте уважаемые эксперты! Подскажите пожалуйста как отключить в экселе автоматический пересчет только одного листа. (на нем содержатся сводные данные по всем листам в книге). Спасибо!...
Вопрос № 101543: Как поделить два числа чтоб в результате после комы выводило не бельше чем 3 числа?...

Вопрос № 101.512
Уважаемые эксперты, помогите с решением простоя задачи. Есть текстовый файл *.txt. Как програмно определить его кодировку и пересохранить в Unicode?
Отправлен: 10.09.2007, 13:35
Вопрос задал: Vladimir Dobrov (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Iris
Здравствуйте, Vladimir Dobrov!
Сначала переименуйте вручную
Лист1 в - str1_
Лист2 в - str2_
....(если захотите, можете потом в коде сами добавить:-)...меня так устраивает)
и сам код:

Sub FIO()
x = 1
str1_ = ActiveSheet.Name
Num = 1
sbros = ""
sbros1 = ""
sbros2 = ""

ActiveCell.SpecialCells(xlLastCell).Select
x = ActiveCell.Row
For i = 1 To x Step 1
Worksheets(str1_).Activate
Cells(i, 1).Select
sbros = Cells(i, 1).Value
Cells(i, 2).Select
sbros1 = Cells(i, 2).Value
Cells(i, 3).Select
sbros2 = Cells(i, 3).Value

Worksheets("str2_").Activate

Cells(Num, 1).Value = Mid(sbros, 1) + " " + Mid(sbros1, 1) + " " + Mid(sbros2, 1)
Num = Num + 1
Next i
End Sub

Ответ отправила: Iris (статус: 1-ый класс)
Ответ отправлен: 10.09.2007, 14:25

Отвечает: Черников Игорь Владимирович
Здравствуйте, Vladimir Dobrov!
Что касается, определить кодировку. Это сложно. Обычно для этих целей создается база с наиболее часто употребляемыми словами и потом текст сравнивается на наличие таких слов. Например, предлог "как" в кодировке koi-8 выглядит "ЛБЛ". Понятно, что такое словосочетание вряд ли будет в нормальном тексте (хотя и возможно), отсюда можно заключить, что это текст в кодировке koi-8.
http://e-dok.narod.ru/delphi/question1/opas/opas-026.html
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 5-ый класс)
Ответ отправлен: 10.09.2007, 18:02


Вопрос № 101.513
Здраствуйте скажите пожалуйста, как можно поделить два числа чтоб при результате числа после комы не считались?
НАПРИМЕР 12/5=2,4 , А НУЖНО = 2
Отправлен: 10.09.2007, 13:44
Вопрос задал: Коновалов Николай Станиславович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: AlexanderZh
Здравствуйте, Коновалов Николай Станиславович!
Попробуйте вот так: 125. Чтобы найти остаток, вот так: 12 MOD 5
---------
Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет... © народное
Ответ отправил: AlexanderZh (статус: Практикант)
Ответ отправлен: 10.09.2007, 13:58

Отвечает: Черников Игорь Владимирович
Здравствуйте, Коновалов Николай Станиславович!
В данном примере показано, как функции Int и Fix возвращают целые части чисел. В случае отрицательного аргумента Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix ближайшее отрицательное целое число, большее либо равное указанному.

Dim MyNumber
MyNumber = Int(99.8) ' Возвращает 99.
MyNumber = Fix(99.2) ' Возвращает 99.

MyNumber = Int(-99.8) ' Возвращает -100.
MyNumber = Fix(-99.8) ' Возвращает -99.

MyNumber = Int(-99.2) ' Возвращает -100.
MyNumber = Fix(-99.2) ' Возвращает -99.
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 5-ый класс)
Ответ отправлен: 10.09.2007, 18:06

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Коновалов Николай Станиславович!
если вопрос по VB поэкспериментируйте:

Евгений.

Приложение:

Ответ отправил: Тесленко Евгений Алексеевич (статус: 9-ый класс)
Ответ отправлен: 10.09.2007, 20:19
Оценка за ответ: 4


Вопрос № 101.520
Здравствуйте. Вопрос по Visual Basic 6.0 что в этом коде не правильно?

Приложение:

Отправлен: 10.09.2007, 14:42
Вопрос задал: Малышев Владимир Николаевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Черников Игорь Владимирович
Здравствуйте, Малышев Владимир Николаевич!
У Вас было 2 раза объявлено событие Private Sub Form_Load(), сначала он сругался на это, затем на форму потребовал разместить Label1, Text2, Command1 и PictureBox, переименованый под Pic. В директории с программой нужно создать файл input и записать в него несколько строк с числами. Я записл 10 строк от 1 до 10. Всё заработало. Удачи!

Приложение:

---------
От каждого по способностям, каждому по труду

Ответ отправил: Черников Игорь Владимирович (статус: 5-ый класс)
Ответ отправлен: 10.09.2007, 18:30


Вопрос № 101.531
Здравствуйте уважаемые эксперты!
Подскажите пожалуйста как отключить в экселе автоматический пересчет только одного листа. (на нем содержатся сводные данные по всем листам в книге).
Спасибо!
Отправлен: 10.09.2007, 15:58
Вопрос задал: Allbegood (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Allbegood!
Как это сделать через стандартные настройки-не знаю, но с помощью VBA это просто.
открываете свою книгу;

заходите в редактор VBA (Alt+F11);

слева, в Окне проекта (Project Explorer) выделяете нужный лист (у меня просто Лист1);

ниже в Окне свойств(Property Window)ищете свойство EnableCalculation, его нужно установить в False;

все. Таким образом мы запретили пересчет именно этого листа, ни автоматически, ни вручную (через F9), лист пересчитыватся не будет. А если нам все таки понадобится пересчитать этот лист, можно также в VBA редакторе выставить свойство EnableCalculation листа в True, лист автоматически пересчитается, потом опять в False или же лучше использовать простенький макрос:

Вставляете в книгу модуль (Insert->Module) в нем пишите:

Public Sub CalculateOnce()
With Worksheets("Лист1")
.EnableCalculation = True
.EnableCalculation = False
End With
End Sub

где вместо Лист1 вставите имя Вашего листа.
все. Теперь этот макрос будет пересчитывать Ваш лист.
Успехов.
p/s
Подразумевал, что у Вас в настройках книги (Сервис->Параметры->Вычисления) вычисления стоят "автоматически".
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 11.09.2007, 06:21
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо!!! Направление есть. Подстроимся.


Вопрос № 101.543
Как поделить два числа чтоб в результате после комы выводило не бельше чем 3 числа?
Отправлен: 10.09.2007, 17:27
Вопрос задал: Коновалов Николай Станиславович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Черников Игорь Владимирович
Здравствуйте, Коновалов Николай Станиславович!

Dim ПослеЗапятой As Integer
Dim число As Double 'или Long
Dim флаг As Boolean
Dim НеНужноеЧисло As String
Dim НужноеЧисло As Double 'или Long

число = 123456.123456
For i = 1 To Len(CStr(число))
If флаг = True Then ПослеЗапятой = ПослеЗапятой + 1
ОдинСимвол = Mid(CStr(число), i, 1)
If ОдинСимвол = "," Then флаг = True
НеНужноеЧисло = НеНужноеЧисло + ОдинСимвол
If ПослеЗапятой >= 3 Then Exit For
Next i
НужноеЧисло = CDbl(НеНужноеЧисло) 'или CLng
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 5-ый класс)
Ответ отправлен: 10.09.2007, 20:16
Оценка за ответ: 5

Отвечает: PsySex
Здравствуйте, Коновалов Николай Станиславович!
См. приложение.

Приложение:

---------
Bom Shankar!

Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 10.09.2007, 20:34
Оценка за ответ: 5

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Коновалов Николай Станиславович!
попробуйте так:

Евгений.

Приложение:

Ответ отправил: Тесленко Евгений Алексеевич (статус: 9-ый класс)
Ответ отправлен: 10.09.2007, 20:47
Оценка за ответ: 4


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 10.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное