Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Class / 11 сообщений из 11, страница 1 из 1
26.02.2006, 11:23:09
    #33565256
Bodrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
создал класс IOTurnover. Приведенный ниже код в моделе выдает что объект не поддерживет данное свойство(Set obj = New IOTurnover). переменная obj не инициализируется

Sub start()
Dim obj As New IOTurnover
'Set obj = New IOTurnover
obj.start
End Sub

почему код не работает ..?
...
Рейтинг: 0 / 0
26.02.2006, 12:32:43
    #33565425
Class
Код: plaintext
1.
2.
    Dim obj As IOTurnover
    Set obj = New IOTurnover
    obj.start

или

Код: plaintext
1.
    Dim obj As New IOTurnover
    obj.start

Если не помогло, приведи полностью модуль класса, и процедуру работающую с ним.
...
Рейтинг: 0 / 0
26.02.2006, 12:37:59
    #33565439
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
View-Project Explorer-выдели свой класс(Class1 ?)-в свойствах задай ему имя (IOTurnover). Если я тебя правильно понял, то все должно работать.
...
Рейтинг: 0 / 0
26.02.2006, 16:17:16
    #33566010
Bodrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
Модуль класса не называется Class1 иначе бы он выдавал ошибку компиляции при объявлении переменной obj

код класса

Private store As String
Private d1, d2 As Date
Private period_d1d2 As Integer
Private r_from, r_to, r, c As Range
Private sh_from, sh_to As Worksheet

Private Const RowHeaderOffest As Integer = 8
Private Const Title As String = "Выручка"



' Трансляция функций в зависимости от версии Excel
Private Function getTransl(str As String) As String

End Function

Private Function getInitData() As Boolean

Set sh_from = Application.Sheets("TurnoverLinks")
Set sh_to = Application.Sheets("InputList")

d1 = sh_to.Range(ThisWorkbook.Names("date1").Value).Value
d2 = sh_to.Range(ThisWorkbook.Names("date2").Value).Value
store = sh_to.Range(ThisWorkbook.Names("CurrentStore").Value).Value
period_d1d2 = CInt(d2 - d1)
If d1 <= d2 Then
getInitData = True
Else
MsgBox "Конечная дата должна быть не меньше начальной", vbOKOnly, Title
getInitData = False
End If

End Function
Private Sub makeTable()
'
' формирование шапки таблицы
'
sh_to.Cells(RowHeaderOffest - 1, 1).Value = "Date"
sh_to.Cells(RowHeaderOffest - 1, 2).Value = "eur"
sh_to.Cells(RowHeaderOffest - 1, 3).Value = "usd"
sh_to.Cells(RowHeaderOffest - 1, 4).Value = store & " usd"
sh_to.Cells(RowHeaderOffest - 1, 5).Value = store & " eur"
sh_to.Cells(RowHeaderOffest - 1, 6).Value = store & " rur"
sh_to.Cells(RowHeaderOffest - 1, 7).Value = store & " usd_total"
sh_to.Range(Cells(RowHeaderOffest - 1, 1), Cells(RowHeaderOffest - 1, 7)).Font.Bold = True


Set r = sh_from.Range(ThisWorkbook.Names("dates_list")).Find(d1, LookIn:=xlValues)
Set c = sh_from.Range(ThisWorkbook.Names("uno_headers")).Find(store, LookIn:=xlValues)

If Not r Is Nothing And Not c Is Nothing Then
Set r_from = sh_from.Range(sh_from.Cells(r.Row, c.Column), sh_from.Cells(r.Row + period_d1d2 - 1, c.Column + 3))
Set r_to = sh_to.Range(sh_to.Cells(RowHeaderOffest, 4), sh_to.Cells(RowHeaderOffest - 1 + period_d1d2, 6))

sh_from.Range(sh_from.Cells(r.Row, c.Column), sh_from.Cells(r.Row + period_d1d2 - 1, c.Column + 3)).Copy (r_to)
r_to.NumberFormat = "#,##0.00"
End If

fillFormulas

'With sh_to.Range(sh_to.Cells(RowHeaderOffest, 4), sh_to.Cells(RowHeaderOffest - 1 + period_d1d2, 6))
' .PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' .NumberFormat = "#,##0.00"
'End With


'r_from.BorderAround ColorIndex:=3, Weight:=xlThick
'r_to.BorderAround ColorIndex:=3, Weight:=xlThick

End Sub
Private Sub fillFormulas()

For Each k In sh_to.Range(sh_to.Cells(RowHeaderOffest + period_d1d2, 4), sh_to.Cells(RowHeaderOffest + period_d1d2, 7))
k.FormulaR1C1 = "=SUM(R[-" & period_d1d2 & "]C:R[-1]C)"
k.Font.Bold = True
Next k

i = 0
For D = d1 To d2 - 1
sh_to.Cells(i + RowHeaderOffest, 1).Value = d1 + i
sh_to.Cells(i + RowHeaderOffest, 2).FormulaR1C1 = "=VLOOKUP(RC[-1],eur!C1:C2,2)"
sh_to.Cells(i + RowHeaderOffest, 3).FormulaR1C1 = "=VLOOKUP(RC[-2],usd!C1:C2,2)"
sh_to.Cells(i + RowHeaderOffest, 7).FormulaR1C1 = "=SUM(RC[-3],RC[-1]/RC[-4],RC[-2]*RC[-5]/RC[-4])"
sh_to.Cells(i + RowHeaderOffest, 7).NumberFormat = "#,##0.00"
i = i + 1
Next D
sh_to.Cells(i + RowHeaderOffest, 7).NumberFormat = "#,##0.00"

End Sub

Private Sub clear()
Dim tmp As String
Dim r As Range
tmp = "A" & RowHeaderOffest & ":G65536"
Set r = sh_to.Range(tmp)
If Not r Is Nothing Then
r.clear
End If
Set r = Nothing


End Sub

Public Sub getData()
Application.DisplayAlerts = False
If Not getInitData Then
Exit Sub
End If
clear
makeTable
Windows(1).FreezePanes = False
Application.DisplayAlerts = True
sh_to.Cells(RowHeaderOffest, 4).Select

End Sub

Public Sub setData()
Application.DisplayAlerts = False

If Not (r_to Is Nothing Or r_from Is Nothing) Then
r_to.Copy (r_from)
'r_from.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
MsgBox "Данные записаны", vbOKOnly, Title

Else
MsgBox "Ошибка данные не получены", vbOKOnly, Title
End If

Application.DisplayAlerts = True
sh_to.Cells(RowHeaderOffest, 4).Select

End Sub
...
Рейтинг: 0 / 0
26.02.2006, 16:20:17
    #33566017
Bodrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
функцию класса start переименовал в getData
...
Рейтинг: 0 / 0
26.02.2006, 16:48:51
    #33566063
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
Так в чем проблема? У меня твой код работает. Доходит до поиска листа (TurnoverLinks). Дальше не проверял.
...
Рейтинг: 0 / 0
26.02.2006, 17:42:23
    #33566168
Bodrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
это хорошо что у тебя доходит а у меня при выполнении в модуле происходит :
91 ошибка "object variable or with block not set" и принажатии debug курсор стоит на сторочке obj.start
...
Рейтинг: 0 / 0
26.02.2006, 18:09:12
    #33566213
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
Как и где создан модуль класса?
...
Рейтинг: 0 / 0
26.02.2006, 19:39:35
    #33566359
Bodrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
работает!! прикол кажется был в этой строчке в модуле ThisWorkbook:

Private obj As New IOTurnover

а нужно:

Dim obj As New IOTurnover

Спасибо большое за помощь )

как определить версию excel чтобы программно правильно формулы подставлять
=SUM(D13;F13/C13;E13*B13/C13)
или
=сумм(D13;F13/C13;E13*B13/C13)
...
Рейтинг: 0 / 0
26.02.2006, 21:57:03
    #33566477
Class
Не версию, а язык наверное.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    'Const msoLanguageIDRussian = 1049 (&H419)
    'Const msoLanguageIDEnglishUS = 1033 (&H409)

    With Application.LanguageSettings
        Debug.Print "Install Language - " _
          & .LanguageID(msoLanguageIDInstall)
        Debug.Print "User Interface Language - " _
          & .LanguageID(msoLanguageIDUI)
        Debug.Print "Help Language - " _
          & .LanguageID(msoLanguageIDHelp)
    End With
...
Рейтинг: 0 / 0
27.02.2006, 09:32:02
    #33566811
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Class
Bodrovкак определить версию excel чтобы программно правильно формулы подставлять
=SUM(D13;F13/C13;E13*B13/C13)
или
=сумм(D13;F13/C13;E13*B13/C13)
А разве нельзя просто написать?
Cell.Formula = "=SUM(D13;F13/C13;E13*B13/C13)"
У меня русская версия офиса, а в результате выполнения макроса в ячейке появляется
=СУММ(D13;F13/C13;E13*B13/C13)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Class / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]