Тема: Возможно ли менять значения посредством VBA?

Допустим я создаю блок ввиде таблицы 2 на 2. В ячейках значения.
Возможно ли изменять эти значения, создав кнопку, при нажатии на которую значения изменяются (например на единицу)?
И можно ли сделать так, что в зависимости от значений, менялся цвет блока? (аналог экселевского "условного форматирования")

Re: Возможно ли менять значения посредством VBA?

Возможно

Re: Возможно ли менять значения посредством VBA?

> Gogi
А не напишите коротко как? Я с VBA работю только в Excel, сейчас вот начинаю в AutoCad.

Re: Возможно ли менять значения посредством VBA?

[rus]Variant1:
Sozdaem blok v vide tablicy. V jacheiki tablicy vstavljaem atributy. Pri nazhatii na knopochku vyzyvaem proceduru VBA kotoraja poprosit pol'zovatelja tknut' na blok, zatem prochitaet atributy ukazanogo bloka izmenit ih kak vam ugodno i zatem pomenjaet cvet bloka v sootvetstvii so znacheniem atributov.
Variant2: Tozhe samoe tol'ko ispol'zuja vmesto bloka i atributov ob''ekt [/rus]AcadTable

Re: Возможно ли менять значения посредством VBA?

To Gogi:
Не мог бы ты привести примитивный примерчик по второму варианту?
Заранее спасибо!

Re: Возможно ли менять значения посредством VBA?

Sub temp1()
Dim oTable As AcadTable
Dim insPt
Dim iRows As Long, iCols As Long
Dim rowHgt As Double, colWid As Double
Dim col As New AcadAcCmColor
    insPt = ThisDrawing.Utility.GetPoint(, "Pick table insertion point:")
    iRows = 2
    iCols = 2
    rowHgt = 4
    colWid = 6
    Set oTable = ThisDrawing.ModelSpace.AddTable(insPt, iRows, iCols, rowHgt, colWid)
    oTable.RegenerateTableSuppressed = True
    oTable.SetText 0, 0, "1"
    oTable.SetText 1, 1, "2"
    oTable.SetText 1, 0, "3"
    col.ColorIndex = Val(oTable.GetText(1, 1))
    If col.ColorIndex <> acWhite And col.ColorIndex <> 0 Then
        oTable.SetCellBackgroundColor 1, 1, col
        oTable.SetCellBackgroundColorNone 1, 1, False
    End If
    oTable.RegenerateTableSuppressed = False
End Sub
Sub temp2()
Dim oTable As AcadTable
Dim col As New AcadAcCmColor
Dim returnObj As AcadObject
Dim basePnt As Variant
    On Error Resume Next
    ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select a table"
    Set oTable = returnObj
    oTable.RegenerateTableSuppressed = True
    oTable.SetText 1, 0, Trim(Str(Val(oTable.GetText(1, 0)) + 1))
    col.ColorIndex = Val(oTable.GetText(1, 0))
    If col.ColorIndex <> acWhite And col.ColorIndex <> 0 Then
        oTable.SetCellBackgroundColor 1, 0, col
        oTable.SetCellBackgroundColorNone 1, 0, False
    End If
    oTable.RegenerateTableSuppressed = False
End Sub