Чертане във VBA

7 отговора 0 прегледа
#1

Чертане във VBA

Здравейте! От доста време ползвам този форум като самоучител по VBA и Ексел и страшно много код и идеи са ми влезли в работа,за което Ви благодаря.
Опитвам се да направя нещо като програма за пресмятяне и разкрой на дограма.Програмата в общи линии е почти готова, но забих с изчертаването и оразмеряването на /как да го кажа?/елементите.Пробвах с условно форматиране и стана, но след това не мога да събера няколко елемента да се отпечатват на един лист. Явно ще се работи с VBA, но там съм на ниво копирай-постави, разбира се със съответното модифициране под моите нужди на принципа проба-грешка.
Молбата ми е ако има начин да се чертае във VBA да ме насочите към примери или към команди и синтаксисът им.
Проектът е любителски, без краен срок и го правя за собствено удоволствие и за убиване на времето. Това го казвам, защото предполагам че има много достатъчно заети хора тук и само ако имате свободно време и разбира се, желание да "човъркате",можете да помогнете.Но, от друга страна пък, решението или решенията със сигурност ще помогнат на някой друг.
Благодаря Ви!

Отговор
в отговор на nikdan #2

Re: Чертане във VBA

Така написано на мен ми стои странно .... Да използваш VBA за чертане може, ама в коя Програма? Аз ползвам от Excel чрез VBA да чертая в AutoCAD. Сигурно може да се изимитира чертане във Excel или по-добре във Visio ... ама кой знае. Разгледай нещата свързани със Shapes -> AddShape
Примерно аз се побъзиках :

Sub Rectang()
Dim Rect As Shape
Dim W, H As Double
W = Application.InputBox("Въведи Широчина [cm]")
H = Application.InputBox("Въведи Височина [cm]")
W = W * 28.35
H = H * 28.35
Set Rect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10#, 100#, W, H)
' expression.AddShape(Type, Left, Top, Width, Height)
Rect.Fill.Visible = msoFalse
Rect.Fill.Solid
Rect.Fill.Transparency = 1#
Rect.Line.Weight = 2
Rect.Line.DashStyle = msoLineSolid
Rect.Line.Style = msoLineSingle
Rect.Line.Transparency = 0#
Rect.Line.Visible = msoTrue
Rect.Line.ForeColor.SchemeColor = 64
Rect.Line.BackColor.RGB = RGB(255, 255, 255)
Rect.LockAspectRatio = msoFalse
' Rect.Height = 141.75
' Rect.Width = 283.5
Rect.Rotation = 0#
End Sub


Отговор
в отговор на Mинaвaщ #3

Чертане без VBA

Елементарни форми могат да се "рисуват" с възможностите
за диаграми в Excel. Освен това диаграмите имат
възможност за връзка между табличните данни и
получената графика. Правил съм доста неща, опитай!

Не бързай да подозираш лош умисъл - може да е обикновена глупост!
Отговор
в отговор на npubem #4

Re: Чертане без VBA

Благодаря за отговорите.Пробвал съм с диаграмите, но не може да се направи това, което искам.Или поне аз не можах.
Благодаря и на Минаващият за кодчето - промених го да си взема данните от клетки и мисля че ще ми свърши работа.Но ми е нужно да не се мести и преоразмерява заедно с клетките, но не можах да го направя.И другото е: как да го променя за да рисува линии?С проста смяна на Rect с Line не се получи.
Надявам се че ще "удариш" отново едно рамо.
А за външните програми - Явно аз не съм обяснил правилно каква точно ми е идеята.А тя е не аз да чертая, а ексел да си генерира сам чертежчето според въведените данни за даденият прозорец или врата, след което да го копира на друг лист на който по същият начин, последователно ще се копират и другите елементи от поръчката за да не се отпечатва всеки елемент на отделен лист.

Отговор
в отговор на nikdan #5

Shape в Excel и VBA

На теория би трябвало да може да използваш всички Форми в Excel
и да модифицираш техните размери и свойства, ама ...
Примерен списък:
MsoAutoShapeType can be one of these MsoAutoShapeType constants.
msoShape16pointStar
msoShape24pointStar
msoShape32pointStar
msoShape4pointStar
msoShape5pointStar
msoShape8pointStar
msoShapeActionButtonBackorPrevious
msoShapeActionButtonBeginning
msoShapeActionButtonCustom
msoShapeActionButtonDocument
msoShapeActionButtonEnd
msoShapeActionButtonForwardorNext
msoShapeActionButtonHelp
msoShapeActionButtonHome
msoShapeActionButtonInformation
msoShapeActionButtonMovie
msoShapeActionButtonReturn
msoShapeActionButtonSound
msoShapeArc
msoShapeBalloon
msoShapeBentArrow
msoShapeBentUpArrow
msoShapeBevel
msoShapeBlockArc
msoShapeCan
msoShapeChevron
msoShapeCircularArrow
msoShapeCloudCallout
msoShapeCross
msoShapeCube
msoShapeCurvedDownArrow
msoShapeCurvedDownRibbon
msoShapeCurvedLeftArrow
msoShapeCurvedRightArrow
msoShapeCurvedUpArrow
msoShapeCurvedUpRibbon
msoShapeDiamond
msoShapeDonut
msoShapeDoubleBrace
msoShapeDoubleBracket
msoShapeDoubleWave
msoShapeDownArrow
msoShapeDownArrowCallout
msoShapeDownRibbon
msoShapeExplosion1
msoShapeExplosion2
msoShapeFlowchartAlternateProcess
msoShapeFlowchartCard
msoShapeFlowchartCollate
msoShapeFlowchartConnector
msoShapeFlowchartData
msoShapeFlowchartDecision
msoShapeFlowchartDelay
msoShapeFlowchartDirectAccessStorage
msoShapeFlowchartDisplay
msoShapeFlowchartDocument
msoShapeFlowchartExtract
msoShapeFlowchartInternalStorage
msoShapeFlowchartMagneticDisk
msoShapeFlowchartManualInput
msoShapeFlowchartManualOperation
msoShapeFlowchartMerge
msoShapeFlowchartMultidocument
msoShapeFlowchartOffpageConnector
msoShapeFlowchartOr
msoShapeFlowchartPredefinedProcess
msoShapeFlowchartPreparation
msoShapeFlowchartProcess
msoShapeFlowchartPunchedTape
msoShapeFlowchartSequentialAccessStorage
msoShapeFlowchartSort
msoShapeFlowchartStoredData
msoShapeFlowchartSummingJunction
msoShapeFlowchartTerminator
msoShapeFoldedCorner
msoShapeHeart
msoShapeHexagon
msoShapeHorizontalScroll
msoShapeIsoscelesTriangle
msoShapeLeftArrow
msoShapeLeftArrowCallout
msoShapeLeftBrace
msoShapeLeftBracket
msoShapeLeftRightArrow
msoShapeLeftRightArrowCallout
msoShapeLeftRightUpArrow
msoShapeLeftUpArrow
msoShapeLightningBolt
msoShapeLineCallout1
msoShapeLineCallout1AccentBar
msoShapeLineCallout1BorderandAccentBar
msoShapeLineCallout1NoBorder
msoShapeLineCallout2
msoShapeLineCallout2AccentBar
msoShapeLineCallout2BorderandAccentBar
msoShapeLineCallout2NoBorder
msoShapeLineCallout3
msoShapeLineCallout3AccentBar
msoShapeLineCallout3BorderandAccentBar
msoShapeLineCallout3NoBorder
msoShapeLineCallout4
msoShapeLineCallout4AccentBar
msoShapeLineCallout4BorderandAccentBar
msoShapeLineCallout4NoBorder
msoShapeMixed
msoShapeMoon
msoShapeNoSymbol
msoShapeNotchedRightArrow
msoShapeNotPrimitive
msoShapeOctagon
msoShapeOval
msoShapeOvalCallout
msoShapeParallelogram
msoShapePentagon
msoShapePlaque
msoShapeQuadArrow
msoShapeQuadArrowCallout
msoShapeRectangle
msoShapeRectangularCallout
msoShapeRegularPentagon
msoShapeRightArrow
msoShapeRightArrowCallout
msoShapeRightBrace
msoShapeRightBracket
msoShapeRightTriangle
msoShapeRoundedRectangle
msoShapeRoundedRectangularCallout
msoShapeSmileyFace
msoShapeStripedRightArrow
msoShapeSun
msoShapeTrapezoid
msoShapeUpArrow
msoShapeUpArrowCallout
msoShapeUpDownArrow
msoShapeUpDownArrowCallout
msoShapeUpRibbon
msoShapeUTurnArrow
msoShapeVerticalScroll
msoShapeWave


имам чувство, че списъка не е пълен, не виждам Freeform ... a там можеше да се описва с координати на точките

Отговор
в отговор на nikdan #6

Аз чертая , ти чертаеш, всички ние чертаем ...

В отговор на:

А тя е не аз да чертая, а ексел да си генерира сам чертежчето според въведените данни...



Никога не съм си мислил, че в Excel може да се чертае! Да ползваш готови Форми/Shapes и да имитираш чертеж или да направиш някакво схематично графично представяне вероятно е възможно !
Спри да повтаряш ЧЕРТЕЖ ! Тук има хора които наистина правят Чертежи
Измисли си някаква друга думичка, верно че и в Excel пише Чертожни Обекти, ама .... ай стигаде
Примерно Схема, Графично визуализиране ... и пр.

Отговор
в отговор на Mинaвaщ #7

Re: Допълнение

Допълнение:
MsoShapeType can be one of these MsoShapeType constants.
msoAutoShape
msoCallout
msoCanvas
msoChart
msoComment
msoDiagram
msoEmbeddedOLEObject
msoFormControl
msoFreeform
msoGroup
msoLine
msoLinkedOLEObject
msoLinkedPicture
msoMedia Can not be used with this property. This constant is used with shapes in other Microsoft Office applications.
msoOLEControlObject
msoPicture
msoPlaceholder Can not be used with this property. This constant is used with shapes in other Microsoft Office applications.
msoScriptAnchor
msoShapeTypeMixed
msoTable
msoTextBox
msoTextEffect


Отговор
в отговор на Mинaвaщ #8

Re: Допълнение

Благодаря отново за отделеното време.А "Чертежа" е от 15 годишно "професионално" изкривяване.

Отговор