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

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


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

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

Выпуск № 582
от 30.07.2007, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 289, Экспертов: 39
В номере:Вопросов: 3, Ответов: 7


Вопрос № 96199: Добрый день! подскажите пожалуйста, как в EXCEL преобразовать информацию в ячейке. сейчас в ячейке находится число, как результат произведения двух других ячеек: =ПРОИЗВЕД(AJ7;AL7) а я бы хотела, чтобы было просто число 5,60. это мне ...
Вопрос № 96276: У меня такая задачка : У меня есть лист который редактируется каждый день. Я хотел бы написать макрос который сохраняет этот лист с таким именем "Лист 1 дата" где лист 1 это название текушего листа а дата сегоднешняя дата, тоесть я...
Вопрос № 96341: Ув. ЭКСПЕРТЫ! Здравствуйте!Помогите пожалуйста! Есть таблица- шаблон вида: обязательная часть1 обязательная часть2 обязательная часть3 В промежуток между "обязательная часть1"и"обязательная часть...

Вопрос № 96.199
Добрый день!
подскажите пожалуйста, как в EXCEL преобразовать информацию в ячейке. сейчас в ячейке находится число, как результат произведения двух других ячеек:
=ПРОИЗВЕД(AJ7;AL7)
а я бы хотела, чтобы было просто число 5,60.
это мне надо проделать для длинного столбца чисел и для нескольких таблиц, поэтому, прошу подсказать, как эти изменения можно проделать в цикле.
заранее благодарна!
Отправлен: 24.07.2007, 12:13
Вопрос задала: Шубейко Маргарита (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Volodimir
Здравствуйте, Шубейко Маргарита!
можно такой вариант сначала вырезаем содержимое ячеек а потом их вставляем с помощью "специальная вставка" - значения


---------
УЧИТСЯ УЧИТСЯ УЧИТСЯ
Ответ отправил: Volodimir (статус: 1-ый класс)
Ответ отправлен: 24.07.2007, 13:27
Оценка за ответ: 5

Отвечает: Черников Игорь Владимирович
Здравствуйте, Шубейко Маргарита!
Вот ваш цикл с пояснениями, скопируйте всё и вставьте в макрос:
Sub Для_Маргариточки()
Dim НомерСтроки As Integer 'Объявляем переменную "НомерСтроки" как целое число (не обязательно, эту строку можно удалить)
Dim КолСимв As Integer 'Объявляем переменную "КолСимв" как целое число от -32768 до 32767
Dim temp As String 'Объявляем переменную "temp" как строку т.е. в ней содержатся не цифры, а символы
Dim начало As String
Dim конец As String
'Do Loop - цикл, всё, что между ними
Do 'Начало цикла, со следующей строки - тело цикла
'Увеличеваем число, содержащееся в переменной "НомерСтроки" на 1
НомерСтроки = НомерСтроки + 1
'Если запускать программу не клавишей F5, а клавишей F8, то программа будет выполняться построчно, т.е чтобы выполнилась следующая строка программы, нужно снова нажать F8
'При построчном выполнении программы можно посмотреть содержание любой переменной на данный момент, достаточно навести на неё курсор мышки
'далее переменной "temp" присвается значение ячейки А1, т.к в первом цикле НомерСтроки=1
'& - складывает символ А с символами цифры, содержащейся в переменной НомерСтроки т.е. 1
temp = Range("A" & НомерСтроки)
'Далее проверяем содержимое переменной "temp". If - если, temp = "" - переменная temp равна пустой строке (если там ничего не содержится)
'Then - то, Exit Do - выход из цикла(можно написать End - конец программы)
If temp = "" Then Exit Do
'в переменную КолСимв с помощью Len записываем количество символов, содержащихся в переменной temp
КолСимв = Len(temp)
'Далее в переменную "начало" записываем часть символов из переменной temp
'Mid - после открывающейся скобки до первой запятой вставляем переменную, из которой нужно выбрать символы или сами символы (но тогда в кавычках)
'между первой и второй запятыми пишем цифру или переменую, в которой содержится число, или выражение с действиями, в результате которых вычисляется цисло, означающее с какого по счёту символа (слева на право)нужно начинать отбор,
'между второй запятой и закрывающейся скобкой пишем цифру, переменную или выражение, означающее сколько символов нужно выбрать
'в нашем случае в переменной temp содержится содержимое ячейки А1 (в первом цикле)
'затем стоит цифра 1, что означает: читать с первого символа
'затем выражение КолСимв - 2, т.е. от количества символов, подсчитанных в предыдущей строке оператором Len, отнимается 2
'в результате в переменную начало запишутся все символы из переменной temp, кроме двух последних
начало = Mid(temp, 1, КолСимв - 2)
'в переменную конец запишутся (из переменной temp, начиная с предпоследнего, два символа)
конец = Mid(temp, КолСимв - 1, 2)
'Затем в ту же ячейку записываем содержимое наших переменных, но между ними вставляем запятую:
Range("A" & НомерСтроки) = начало & "," & конец

Loop 'это конец цикла, после этой строки программа перейдёт к строке Do (убедитесь в этом, нажимая клавищу F8)
End Sub 'конец программы

---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 2-ой класс)
Ответ отправлен: 24.07.2007, 18:14
Оценка за ответ: 5

Отвечает: Nance
Здравствуйте, Шубейко Маргарита!
Dim i as integer
Dim j as integer
For i=1 to 10 'значение по столбцам
for j=1 to 10 эзначенния по строкам
Cells (i,j).value=5,6
next j
next i
этот код позволит заменить значения во всех ячейках диапазона (А1:G10) на число 5,6, если нужно заменять значения на разные числа, то этот код использовать нельзя, дайте мне знать, и подробно опишите что Вам нужно, постараюсь помочь.
Ответ отправила: Nance (статус: 4-ый класс)
Ответ отправлен: 24.07.2007, 18:48
Оценка за ответ: 5

Отвечает: Alec Perle
Здравствуйте, Шубейко Маргарита!
Проще всего воспользоваться копированием и специальной вставкой:
1. выделяем фрагмент, содержащий необходимые ячейки
2. копируем (Правка - Копировать, или Ctrl-C, или Ctrl-Ins, или правой кнопкой мышки - Копировать, или через панель инструментов)
3. не меняя выделения (или выделив первую, т.е. левую-верхнюю, ячейку диапазона) вставляем значения (меню Правка - Специальная вставка - Значения).
Если же Вам нужно провести эту операцию в цикле с помощью VBA, то с помощью макроса:
Sub NoFormula()
With ActiveSheet.Range("A1:D15")'подставьте свой диапазон
.Formula = .Value
End With
End Sub
можно заменить формулы их значениями в диапазоне A1:D15.

А с помощью макроса:
Sub NoFormula()
With ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells.SpecialCells(xlLastCell))
.Formula = .Value
End With
End Sub
Вы избавитесь от ВСЕХ формул на активном листе навсегда...


---------
Пессимист - это хорошо информированный оптимист (а оптимист - хорошо проинструктированный пессимист)
Ответ отправил: Alec Perle (статус: Студент)
Ответ отправлен: 24.07.2007, 20:50
Оценка за ответ: 5


Вопрос № 96.276
У меня такая задачка :

У меня есть лист который редактируется каждый день. Я хотел бы написать макрос который сохраняет этот лист с таким именем "Лист 1 дата" где лист 1 это название текушего листа а дата сегоднешняя дата, тоесть я хочу чтоб у меня вся информация которая менялась была сохранена в хронологическом порядке. Пожалуйста напишите листинг этого макроса Буду очень благодарен !!

Отправлен: 25.07.2007, 01:22
Вопрос задал: Вытришко Сергей Владимирович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Volodimir
Здравствуйте, Вытришко Сергей Владимирович!
Вот привожу код который работает у меня, для этого я создал кнопку и вставил туда вот это
В ячейке A1 можно записать имя файла

Приложение:

---------
УЧИТСЯ УЧИТСЯ УЧИТСЯ

Ответ отправил: Volodimir (статус: 1-ый класс)
Ответ отправлен: 25.07.2007, 15:40

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

Вот листинг кода с пояснениями:
Сначала копируем Лист1 и вставляем его во вторую позицию
Sheets("Лист1").Copy Before:=Sheets(2)
Затем переименовываем его:
Sheets("Лист1 (2)").Name = "Лист1 " & Date
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 2-ой класс)
Ответ отправлен: 25.07.2007, 17:12


Вопрос № 96.341
Ув. ЭКСПЕРТЫ! Здравствуйте!Помогите пожалуйста!
Есть таблица- шаблон вида:
обязательная часть1

обязательная часть2

обязательная часть3

В промежуток между "обязательная часть1"и"обязательная часть2" нужно всавить данные из другой книги. Допустим 1.xls

между "обязательная часть2"и"обязательная часть3" вставить данные из 2.xls

формат данных всех таблиц совпадает.
Заранее спасибо!
Отправлен: 25.07.2007, 15:11
Вопрос задала: Maychik (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Черников Игорь Владимирович
Здравствуйте, Maychik!
Sub Даные_из_другой_книги()
'Допустим файл 1.xls находится на диске C: в новой папке, открываем его:
Workbooks.Open Filename:="C:Новая папка1.xls"
'выбираем нужный лист, н-р: Лист1
Sheets("Лист1").Select
'выделяем диапазон нужных ячеек н-р: с А5 по В20
Range("A5:B20").Select
'копируем всё из этого диапазона
Selection.Copy
'закрываем книгу, которую открыли
ActiveWindow.Close
'выбираем лист, в который нужно вставить данные
Sheets("Лист3").Select
'выбираем верхнюю левую ячейку из диапазона ячеек, в которые нужно вставить данные
Range("C12").Select
'вставляем
ActiveSheet.Paste
'Затем повторяем весь этот код, но меняем путь и название открываемого файла, который нужно открыть и ячейки
'... 2.xls
'...
'всё
End Sub
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 2-ой класс)
Ответ отправлен: 25.07.2007, 18:43
Оценка за ответ: 4
Комментарий оценки:
спасибо за подробный комментарий к коду, НО!Не все так просто. Я на мини-форум вопросы к ответу отправила. Посмотрите, пожалуйста и если можете - помогите.


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

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

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

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

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


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


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

В избранное