Страницы: 1 2 След.
RSS
Программирование на VBA в Exel.
 
Всем доброго временя дня и суток. Помогите пожалуйста. По информатике задали курсовую работу, суть в том чтобы написать программу на языке VBA, половину программы написала, но застряла на одном моменте. Могу прикрепить файл, где описан подробно мой вопрос и сама программа. Спасибо заранее.
 
Здрасьте.  
Для начала загляните сюда: http://www.planetaexcel.ru/forum.php?thread_id=8735
 
Определите переменную Один_Момент As Variant и всё заработает  
:)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Только учусь.}{date=05.05.2011 08:27}{thema=Программирование на VBA в Exel.}{post} Могу прикрепить файл, где описан подробно мой вопрос и сама программа{/post}{/quote}  
И где он? :-)
 
{quote}{login=Юрий М}{date=05.05.2011 09:42}{thema=Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=05.05.2011 08:27}{thema=Программирование на VBA в Exel.}{post} Могу прикрепить файл, где описан подробно мой вопрос и сама программа{/post}{/quote}  
И где он? :-){/post}{/quote}  
 
Юрий здравствуйте, спасибо,что откликнулись. Ссылку прочла и ознакомилась:), надеюсь все правильно сделала:)следовала инструкции:). Прикрепила файл, думаю, так все станет ясно,если,что-то не понятно ругайте, но не сильно:). Спасибо.
 
{quote}{login=Только учусь.}{date=08.05.2011 06:27}{thema=Re: Re: Программирование на VBA в Exel.}{post}{quote}{login=Юрий М}{date=05.05.2011 09:42}{thema=Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=05.05.2011 08:27}{thema=Программирование на VBA в Exel.}{post} Могу прикрепить файл, где описан подробно мой вопрос и сама программа{/post}{/quote}  
И где он? :-){/post}{/quote}  
 
Юрий здравствуйте, спасибо,что откликнулись. Ссылку прочла и ознакомилась:), надеюсь все правильно сделала:)следовала инструкции:). Прикрепила файл, думаю, так все станет ясно,если,что-то не понятно ругайте, но не сильно:). Спасибо.{/post}{/quote}
 
{quote}{login=Только учусь.}{date=08.05.2011 06:29}{thema=Re: Re: Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=08.05.2011 06:27}{thema=Re: Re: Программирование на VBA в Exel.}{post}{quote}{login=Юрий М}{date=05.05.2011 09:42}{thema=Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=05.05.2011 08:27}{thema=Программирование на VBA в Exel.}{post} Могу прикрепить файл, где описан подробно мой вопрос и сама программа{/post}{/quote}  
И где он? :-){/post}{/quote}  
 
Юрий здравствуйте, спасибо,что откликнулись. Ссылку прочла и ознакомилась:), надеюсь все правильно сделала:)следовала инструкции:). Прикрепила файл, думаю, так все станет ясно,если,что-то не понятно ругайте, но не сильно:). Спасибо.{/post}{/quote}{/post}{/quote}  
 
Юрий отправляю Вам отдельно файлы,т.к. при прикреплении архивированного файла выдает ошибку.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
{quote}{login=Только учусь.}{date=08.05.2011 06:34}{thema=Re: Re: Re: Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=08.05.2011 06:29}{thema=Re: Re: Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=08.05.2011 06:27}{thema=Re: Re: Программирование на VBA в Exel.}{post}{quote}{login=Юрий М}{date=05.05.2011 09:42}{thema=Re: Программирование на VBA в Exel.}{post}{quote}{login=Только учусь.}{date=05.05.2011 08:27}{thema=Программирование на VBA в Exel.}{post} Могу прикрепить файл, где описан подробно мой вопрос и сама программа{/post}{/quote}  
И где он? :-){/post}{/quote}  
 
Юрий здравствуйте, спасибо,что откликнулись. Ссылку прочла и ознакомилась:), надеюсь все правильно сделала:)следовала инструкции:). Прикрепила файл, думаю, так все станет ясно,если,что-то не понятно ругайте, но не сильно:). Спасибо.{/post}{/quote}{/post}{/quote}  
 
Юрий отправляю Вам отдельно файлы,т.к. при прикреплении архивированного файла выдает ошибку.{/post}{/quote}
 
{quote}{login=Alex_ST}{date=05.05.2011 09:11}{thema=}{post}Определите переменную Один_Момент As Variant и всё заработает  
:){/post}{/quote}  
 
Alex_ST здравстуйте, спасибо,что тоже откликнулись на мое сообщение, а точнее на призыв о помощи:). Я Вас прекрасно понимаю, что Вы наверное в программировании, а тем более в программе Excel не такой ЧАЙНИК как я, но Вы бы мне советом дельным помогли, чем над девчонкой смеяться, легко быть умным в том, в чем хорошо разбираешься. Но я на Вас не обижаюсь:).
 
"Ссылку прочла и ознакомилась" - плохо читали.  
"Юрий отправляю Вам отдельно файлы" - почему мне? На Форуме много помогающих.
 
Хороший файл, красивый!  
Правда переменную "один момент" я так и не нашел.  
Равно как и не понял задания в целом. А это весма существенно при выборе алгоритма.
 
Постыню не разгребал, но очистку проще делать так:  
 
Sub ocistka()  
Sheets("Результат").[a1:i30].ClearContents
End Sub  
 
Или так, если именно пробел нужно поместить (что вряд ли...)  
Sub ocistka2()  
Sheets("Результат").[a1:i30] = " "
End Sub
 
Хотя по уму заливку тоже нужно убирать, т.е. правильнее  
Sheets("Результат").[a1:i30].Clear
Но тогда при заполнении нужно делать заливку (хотя зачем она?) и рамку.
 
{quote}{login=Только учусь.}{date=05.05.2011 08:27}{thema=Программирование на VBA в Exel.}{post}суть в том чтобы написать программу на языке VBA{/post}{/quote}  
 
любую программу, лишь бы на VBA?  
или вам запретили рлассказывать, что должна делать эта программа?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
А Ваше красное заработало так:  
 
With Sheets("Результат")  
For i = 1 To 7  
mas(i) = .Cells(15 + i, 5)  
Next  
End With  
 
For i = 1 To 7  
If max < mas(i) Then max = mas(i): svet = i  
Next  
 
Лучше обходиться без селектов и активаций.  
Хотя я бы переменную max так не называл - это чревато ошибками, лучше тогда max_...
 
В файле, который я выложила описано само задание, т.е.    
ЗАДАЧА №29: На складе текстильной фабрики находится 7 цветов ниток. За каждый рабочий день (6 дней) расходовалось некоторое количество ниток каждого цвета. Цена ниток не меняется.    
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:    
 
1. исходные данные в виде таблицы, где перечислены цвета ниток, их цена (за 1 бобину), ежедневный расход ниток каждого цвета (количество бобин);    
2. расход ниток каждого цвета за 6 дней;    
3. расход ниток всех цветов за каждый день;    
4. общая стоимость ниток всех цветов, израсходованных за 6 дней;    
5. цвет ниток, максимальное количество которых было израсходовано в 3 день.    
 
Объясняю свою фразу "застряла на одном моменте", которая я так поняла Всех пользователей ввела в заблуждение. Программу написала по всем этапам как требует задача, у меня не получается решить последнее, т.е. №5 в задаче. Вот в принципе и весь вопрос.
 
{quote}{login=Hugo}{date=08.05.2011 07:27}{thema=}{post}А Ваше красное заработало так:  
 
With Sheets("Результат")  
For i = 1 To 7  
mas(i) = .Cells(15 + i, 5)  
Next  
End With  
 
For i = 1 To 7  
If max < mas(i) Then max = mas(i): svet = i  
Next  
 
Лучше обходиться без селектов и активаций.  
Хотя я бы переменную max так не называл - это чревато ошибками, лучше тогда max_...{/post}{/quote}  
 
Hugo спасибо, сейчас попробую :))))
 
{quote}{login=Только учусь.}{date=08.05.2011 07:45}{thema=Программа на VBA в Excel.}{post} у меня не получается решить последнее, т.е. №5 в задаче. Вот в принципе и весь вопрос.{/post}{/quote}  
Может Вы ищите это?  
Application.WorksheetFunction.Max
 
Да, я тоже хотел предложить всё это заменить на  
 
max = Application.max(Sheets("Результат").[e16:e22])
 
Но в челях обучения - тот алгоритм полезно знать :)
 
{quote}{login=Hugo}{date=08.05.2011 07:58}{thema=}{post}max = Application.max(Sheets("Результат").[e16:e22]){/post}{/quote}
 
кгррмммм?..  
 
>> 5. ЦВЕТ (выделено мной - i.) ниток, максимальное количество которых было израсходовано в 3 день.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Что-то буквы путаются... :)  
Забыл сказать - в Вашем коде в строке  
If max < mas(i) Then max = mas(i) And svet = i  
код не работал из-за And, т.к. это можно приравнять к    
max = (mas(i) And svet = i)  
и соответственно max всегда 0.  
Кроме того, Sheets("Результат").Select вероятно недостаточно, ещё и активировать нужно. Но тут я не специалист, ибо не пользуюсь...
 
ikki, я про то, что выделено красным в doc :)  
 
Sheets("Результат").Select  
For i = 1 To 7  
mas(i) = Cells(15 + i, 5)  
 
Next  
For i = 1 To 7  
If max < mas(i) Then max = mas(i) And svet = i  
Next  
 
Т.к. диапазон известен заранее, то вполне можно Sheets("Результат").[e16:e22]
 
{quote}{login=RAN}{date=08.05.2011 06:59}{thema=}{post}Хороший файл, красивый!  
Правда переменную "один момент" я так и не нашел.  
Равно как и не понял задания в целом. А это весма существенно при выборе алгоритма.{/post}{/quote}  
 
RAN здравствуйте, я добавила сообщение на форум, думаю Вам все будет понятно, а за, то, что фал красивый спасибо, главное мне программу к заданию правильно написать)))).
 
Только сйчас заметил, что тот документ уже удалён...  
Вообще мне кажется, что тут весь алгоритм нужно бы переделать - скорее всего всё намного проще можно сделать. Но т.к. что дано и что нужно получить - не понятно, то на этом всё.
 
Милые парни!!! Также не исключаю, что мне стараются помочь и девушки:). Всем огромное спасибо, все Ваши советы приму к сведению, все попробую. Завтра выйду на связь и отчитаюсь, что у меня получилось, а, что нет )))). Я же девушка и для меня программирование, как для мужчин укладка волос)))), спасибо за Ваше терпение. Всем приятного и плодотворного вечера.
 
{quote}{login=Hugo}{date=08.05.2011 08:21}{thema=}{post}Только сйчас заметил, что тот документ уже удалён...  
Вообще мне кажется, что тут весь алгоритм нужно бы переделать - скорее всего всё намного проще можно сделать. Но т.к. что дано и что нужно получить - не понятно, то на этом всё.{/post}{/quote}  
 
Hugo если есть предложения решений моей задачи, то я только всеми руками ЗА, возможно Ваш вариант будет намного проще и правильный, потому,что я ПОЛНЫЙ НОЛЬ в этом деле, и все почти делала по книге методом тыка.
 
а я считаю - девушка молодец. честное слово.  
главное теперь - чтобы оценку не снизили за, мягко говоря, неоптимальный код :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Ну в любом случае опыт Вы получили - это нельзя назвать работой впустую, в будущем пригодится.  
А по задаче - мне задача непонятна. Да и не только мне судя по всему...  
Т.е. в общем понятно, а с какой стороны подойти - не очень :)  
Так что голову ломать не буду, извините.  
Кто только это составлял? Продублирую, раз doc удалили:  
 
Задание 29    
На складе текстильной фабрики находится 7 цветов ниток. За каждый рабочий день (6 дней) расходовалось некоторое количество ниток каждого цвета. Цена ниток не меняется.    
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:    
 
исходные данные в виде таблицы, где перечислены цвета ниток, их цена (за 1 бобину), ежедневный расход ниток каждого цвета (количество бобин);    
расход ниток каждого цвета за 6 дней;    
расход ниток всех цветов за каждый день;    
общая стоимость ниток всех цветов, израсходованных за 6 дней;    
цвет ниток, максимальное количество которых было израсходовано в 3 день.
 
Sheets().Select - уже достаточно для перехода на него:)  
Сам использовал бы функцию макс. Ну и в максимальном приближении к данному решению:)  
Sheets("Результат").Select  
'заносим данные за 3-й день в массив  
For i = 1 To 7  
mas(i) = Cells(15 + i, 5)  
Next  
'определяем Макс значение в массиве  
maxSv = WorksheetFunction.max(mas)  
 
'ищем индекс  
For i = 1 To 7  
If maxSv = mas(i) Then  
svet = i 'Cells(15 + i, 1).Value  
Exit For  
End If  
Next  
 
Ну а в данном решении кажется достаточно записать так  
For i = 1 To 7  
mas(i) = Cells(15 + i, 5)  
Next  
'ищем индекс  
For i = 1 To 7  
If maxSv < mas(i) Then 'если значение переменной меньше значения в массиве  
maxSv = mas(i) 'присваиваем переменной новое значение  
svet = i 'присваиваем переменной новый индекс  
End If  
Next
 
Поизголялся и запихнул все в два цикла.-)
Страницы: 1 2 След.
Читают тему
Наверх