Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Чтение содержания Immediate Window, Содержание Immediate Window
 
Подскажите, есть какие-то возможности в Excel программно прочитать в переменную содержание Immediate Window ?
Клонирование классов, Подскажите как клонировать класс без прямого присваивания всех class properites вручную
 
Подскажите, можно ли в VBA делать клонирование классов?

Есть простой класс person с двумя properties:
Код
Public first_name As String
Public second_name As String

есть subroutine в котором инициируется этот класс в empl1
а затем нужно empl1 скопировать полностью в empl2

но прямое присваивание empl2=empl1 не работает.
Код
Sub vbvb()
    Dim empl1 As New person
    Dim empl2 As New person
    
    empl1.first_name = "andy"
    empl1.second_name = "Smith"    
    empl2 = empl2 ' здесь возникает ошибка...!
End Sub

Есть какой-нибудь выход?
Как в класс vba передать экземпляр другого класса?, Как в класс vba передать экземпляр другого класса?
 
Подскажите, как в Class в VBA передать экземпляр другого класса?

Например есть Класс person с параметрами имя и фамилия
Есть класс group, который содержит коллекцию инстансов person

person и group инициируется программно (как employee и как department), в employee поочередно записываются параметры, а потом employee должен передаваться в в класс department, который добавляет экземпляр employee в свою коллекцию. Но на этапе передачи возникает ошибка.

Как правильно сделать?

Код
'Class person
Public first_name
Public last_name

'Class group
Public list_of_people As New Collection

Public Sub add_person(ByVal instance As person)
    list_of_people.Add (instance)
End Sub


Sub populate_department()

    Dim employee As New person
    Dim department As New group
    Dim index As Variant
    
    employee.first_name = "Peter"
    employee.last_name = "Ivanov"

    department.add_person (employee)   

    
End Sub
Хранение классов в коллекции VBA Excel, Можно ли в коллекцию добавлять класс byValue не как ссылку на экземпляр класса?
 
Подскажите, в VBA Excel есть такой объект как коллекция.
В него можно складывать экземпляры пользовательских классов.
Как я понимаю при добавлении экземпляра класса в коллекцию добавляется ссылка на класс, а не новый класс со своими самостоятельными значениями.
Другими словами, если в экземпляре класса изменить параметры, то член коллекции также будет иметь значения обновленных параметров. Хотя как утверждается, коллекция это read only.
А как в коллекцию добавить класс, который станет самостоятельным классом, т.е. добавить не byRef, а byVal?

Код
Sub pop()
    
    Dim index        
    Dim isthis() As New line    
    Dim interim As New line    
    Dim col1 As New Collection
    Dim col2 As New Collection
    
    ReDim Preserve isthis(1 To 1)
    isthis(1).num = 55
    isthis(1).val = 1500
    isthis(1).des = "portfolio 1"
    
    ReDim Preserve isthis(1 To 2)
    isthis(2).des = "portfolio 2"
    isthis(2).num = 40
    isthis(2).val = 2000
    
    col1.Add isthis(1)
    col2.Add isthis(2)
    
    isthis(1).num = 123    
    interim.des = "interim portfolio"
    interim.num = 555
    interim.val = 1    

    col2.Add interim 'здесь добавляем экземпляр класса    
    interim.val = 0 ' здесь изменяем параметр экземпляра после добавления ранее класса в коллекцию    
    Debug.Print col2(2).val  ' здесь будет 0, а хотелось бы чтобы было старое значение 1

End Sub
Изменено: vmetnev - 22.01.2019 11:03:19
Пользовательские функции для Excel из VB.NET, А можно ли в Excel использовать пользовательские функции, которые написаны в visual studio vb.net?
 
Подскажите, вот в excel есть пользовательские функции, которые можно создать и вызывать либо из ячейки, либо из макроса. Но у меня в проекте их стало так много, что управлять этим кодом очень сложно. Подскажите, а можно эти пользовательские функции написать в visual studio в vb.net и дальше как-то вызывать из excel? Это какую-то надстройку для excel нужно делать?  
Передача значений переменных из Excel через WinHTTP на сервер методом POST
 
Коллеги, подскажите, как правильно передавать значения переменных из Excel через WinHTTP на сервер методом POST?

Есть код:
Код
Sub postpost()

    Dim url As String
        url = "http://localhost:8080/handler3.php"
         Dim http As New WinHttpRequest
            http.Open "POST", url, False
            http.Send ("name=arina&age=25")
            
            Dim Resp As String: Resp = http.ResponseText
            Debug.Print Resp
End Sub

Сами переменные со значениями прописаны в строке http.Send
Но сервер их не видит
Как записать несвязанные диапазоны в переменную типа range
 
Коллеги, помогите с одной штукой. Есть переменная типа Range. Ее можно получить из диапазона ячеек. А если этот диапазон сложный, т.е. A2:A8,C2:C8 ? Как записать такой диапазон в переменную через Cells?  
Формула макросом: по индексу в массиве получить значение
 
Есть формула, которая по индексу в массиве должна возвращать значение. код формулы:
Код
       Worksheets("PN").Range("C5").Offset(index1, index) = Application.WorksheetFunction.index(Worksheets("PT").Range("A1:CKF759"), _
        Application.WorksheetFunction.Match(target_date, Worksheets("PT").Range(Cells(1, index2), Cells(524, index2)), 0), _
       Application.WorksheetFunction.Match(target_ticker, Worksheets("PT").Range(Cells(1, 1), Cells(1, 3000)), 0))
Возвращает ошибку Application-defined or object-defined error.

Не могу понять в чем проблема. Поможете?
Изменено: vmetnev - 03.02.2017 14:58:45
Автоматический запуск макроса при изменении значений в активной ячейке
 
Есть следующий код процедуры:
Код
Sub MyMacro()
  Dim index As Integer

  For index = 1 To 10
    ActiveCell.Offset(index).Value = index
  Next index

End Sub
Процедура запускается, при изменении ячейки A1, следующим кодом:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range: Set rng = [A1:A1]
    If Not Intersect(rng, Target) Is Nothing Then MyMacro
End Sub
Как сделать, чтобы в rng подставлялся адрес активной ячейки?
Как записать таблицу на лист путем обращения к пользовательской функции из ячейки, функцией возвратить массив, который вставляется на лист как таблица
 
Коллеги, подскажите по как при обращении пользовательской функции возвращать на лист не одно значение, а таблицу? Функция должна возвращать массив, который вставляется как таблица на лист Excel. Предположим есть Public Function returnTable (ticker as string) as object, которая принимает строку в качестве параметра. Далее на следующей строке должна троиться таблица из массива 2х2. На листе пишу =returnTable("popCorn"). Но пишет ошибку. В VBA следующий код:
Код
Public Function returnTable(value as string) as object

  Dim myArray( 1 to 2, 1 to 2) as variant
  myArray(1,1)=1
  myArray(1,2)=2
  myArray(2,1)=3
  myArray(2,2)=4

 returnTable=myArray()

end Function
Изменено: vmetnev - 29.01.2017 15:13:53
Пользовательские типы данных excel vba, Пользовательские типы данных excel vba
 
Подскажите, может ли пользовательский тип данных включать в себя другие пользовательские типы?

Например:
Код
Type house
    name as string
    location as strong
flats as apartments

End Type:
Type apartments
    number as integer
    name as string
End Type
Пользовательские типы данных: манипулирование составом переменных
 
Подскажите, можно в процессе выполнения кода VBA в excel манипулировать пользовательскими типами данных. Например добавлять новые переменные в ранее объявленные типы? Есть задача, прочитать массив и программно создать на его основе пользовательский тип данных с переменными, которые соответствуют заголовкам колонок в таблице.
Изменено: vmetnev - 08.12.2015 21:35:13
Страницы: 1
Loading...