Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 11:39   #21
Freddy19
Пользователь
 
Аватар для Freddy19
 
Регистрация: 08.07.2010
Сообщений: 81
По умолчанию

Точняк одна была походу русская. Пасибо!
Freddy19 вне форума
Старый 14.07.2010, 11:42   #22
Freddy19
Пользователь
 
Аватар для Freddy19
 
Регистрация: 08.07.2010
Сообщений: 81
По умолчанию

Private Sub Workbook_Open()

Dim c As Range
Randomize
For Each c In Sheets("Лист2").Range("D4:D9 E4:E9")
c = Int(Rnd * 10)
Next c

End Sub

Такая запись не катит?
Freddy19 вне форума
Старый 14.07.2010, 11:49   #23
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Такая запись не катит?
Катит. Но только в таком виде:
Код:
Private Sub Workbook_Open()
    Dim c As Range
    Randomize
    For Each c In Sheets("Лист2").Range("D4:D9,E4:E9")
        c = Int(Rnd * 10)
    Next c
End Sub
А лучше так (без цикла):
Код:
Private Sub Workbook_Open()
    With Sheets("Лист2").Range("D4:E9")
        .Value = "=Int(Rand() * 10)" ' вставляем формулу
        .Value = .Value ' заменяем формулы значениями
    End With
End Sub
или, что то же самое,
Код:
Private Sub Workbook_Open()
    [Лист2!D4:E9].Value = "=Int(Rand() * 10)"
    [Лист2!D4:E9].Value = [Лист2!D4:E9].Value
End Sub

Последний раз редактировалось EducatedFool; 14.07.2010 в 12:00.
EducatedFool вне форума
Старый 14.07.2010, 11:55   #24
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Цитата:
Сообщение от Freddy19 Посмотреть сообщение
Private Sub Workbook_Open()

Dim c As Range
Randomize
For Each c In Sheets("Лист2").Range("D4:D9 E4:E9")
c = Int(Rnd * 10)
Next c

End Sub

Такая запись не катит?
а что ты хочешь? объединить?
пробел - это пересечение диапазонов (в твоем случае они не пересекаются, что ведет к ошибке),
объединение - это запятая, т.е. Range("D4:D9, E4:E9"), но зачем тебе так,
можно ведь просто Range("D4:E9")
___________________________________ ______________________________
по поводу SpinButton я тебя обманул, там все слегка сложнее обстоит (судя по всему в момент возникновения события Workbook_Open графический слой с элементом SpinButton еще не появляется, либо еще что-то), эту неприятность можно обмануть след. образом:
в модуле "ЭтаКнига" пишем:
Код:
Private Sub Workbook_Open()
   Application.OnTime Now + TimeValue("00:00:02"), "a"
End Sub
здесь происходит безобъектный вызов события, перевод на русский -
вызвать процедуру "а" через 2 секунды после сейчас, к этому моменту SpinButton уже на месте и нормально управляется кодом.

а в обычном модуле:
Код:
Sub a()
   Sheets(1).SpinButton1.Value = 1
End Sub
аналитика вне форума
Старый 14.07.2010, 12:33   #25
Freddy19
Пользователь
 
Аватар для Freddy19
 
Регистрация: 08.07.2010
Сообщений: 81
Хорошо

[QUOTE=аналитика;575296]а что ты хочешь? объединить?
пробел - это пересечение диапазонов (в твоем случае они не пересекаются, что ведет к ошибке),
объединение - это запятая, т.е. Range("D4:D9, E4:E9"), но зачем тебе так,
можно ведь просто Range("D4:E9")
___________________________________ ______________________________

так на много проще!
А SpinButton пойдет и по первому случаю. Хотелось бы чтобы он вообще был пустым поначалу, а потом при щелчке вправо начинал с 1
Freddy19 вне форума
Старый 14.07.2010, 12:38   #26
Freddy19
Пользователь
 
Аватар для Freddy19
 
Регистрация: 08.07.2010
Сообщений: 81
По умолчанию

Помогите такое действие вогнать в цикл, или как подобно можно сделать?

Private Sub SpinButton1_Change()
SpinButton1.Min = 1
SpinButton1.Max = 10
[D35] = Cells(4, 3 + SpinButton1.Value)

'For i = Sheets(2).Range("D4") To Sheets(2).Range("M4") Step 1
'If Sheets(1).Range("D35").Text <> 0 And Sheets(2).Range(i).Text = 1 Then
' FormAvariyDM.Show
'End If


End Sub
Freddy19 вне форума
Старый 14.07.2010, 12:39   #27
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Код:
Private Sub Workbook_Open()
   Sheets(1).SpinButton1.Value = 1
End Sub
у меня вот так не срабатывало, т.е. SpinButton оставался как при закрытии, поэтому и пришлось извращаться с OnTime'ом.


Цитата:
Хотелось бы чтобы он вообще был пустым поначалу, а потом при щелчке вправо начинал с 1
Sheets(1).SpinButton1.Value = 0
аналитика вне форума
Старый 14.07.2010, 12:43   #28
Freddy19
Пользователь
 
Аватар для Freddy19
 
Регистрация: 08.07.2010
Сообщений: 81
По умолчанию

Sheets(1).SpinButton1.Value = 0

так не получается пробовал.
Freddy19 вне форума
Старый 14.07.2010, 12:44   #29
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Цитата:
Сообщение от Freddy19 Посмотреть сообщение
Помогите такое действие вогнать в цикл, или как подобно можно сделать?

Private Sub SpinButton1_Change()
SpinButton1.Min = 1
SpinButton1.Max = 10
[D35] = Cells(4, 3 + SpinButton1.Value)

'For i = Sheets(2).Range("D4") To Sheets(2).Range("M4") Step 1
'If Sheets(1).Range("D35").Text <> 0 And Sheets(2).Range(i).Text = 1 Then
' FormAvariyDM.Show
'End If


End Sub
объясни на русском, что ты хочешь получить?
SpinButton1.Min = 1
SpinButton1.Max = 10
так эти свойства устанавливать внутри обработчика событий точно не надо, просто задай их в режиме конструктора
аналитика вне форума
Старый 14.07.2010, 12:46   #30
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Цитата:
Сообщение от Freddy19 Посмотреть сообщение
Sheets(1).SpinButton1.Value = 0

так не получается пробовал.
сначала, конечно, надо это сделать
SpinButton1.Min = 0
аналитика вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по мелочи Syltan Общие вопросы C/C++ 6 29.09.2009 00:19
Вопрос по мелочи Golovastik Общие вопросы C/C++ 8 23.07.2009 22:47
Задачи вызывают затруднение... матрица и сумма ряда. GorNikSar Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2008 12:51
Задачи вызывают затруднение... матрица и сумма ряда. GorNikSar Помощь студентам 2 19.12.2008 07:11