基于VBA实现电缆结构自动出图(一)——自动出圆形

news2024/12/25 12:48:26

    大家敢相信吗,原来VBA竟然可以实现电缆结构自动出图,换句话说,只要输入数据,VBA会自动将电缆的结构画出来,同时还可以渲染,结果竟然不输画图软件,真真让我刮目相看。这里我就不过多介绍VBA了,相信用过office软件的小伙伴都或多或少的接触过VBA,好的,话不多说,上干货。

    因为这一次的文章涉及的情况比较复杂,正如电缆结构也分很多种,考虑到这也是一次教学,我把文章拆成的几部分,便于大家充分学习和实践。

    首先新建Excel文档,编辑你喜欢的名字,注意文档的后缀为“.xlsm”,这是为后面使用VBA做准备。

    打开该文档,最后实现的界面如下:

     

    输入圆的个数和圆的外径就可以实现自动出圆形。

    备注:1.对于圆的个数的输入框建立“数据验证”,双重保护避免出现低于0的数字,更好的防错机制。 2. 界面中每个输入框建立了条件格式,其目的避免出现低于0的数字。

 实现的代码如下:

Sub Drawcable()
If ActiveSheet.Shapes.Count > 0 Then

ActiveSheet.Shapes.SelectAll
     Selection.Delete
End If

Dim i, Cn, X, Y As Integer
Dim cable() As Shape
Dim coe As Variant
Dim cable_index() As String
Cn = Sheet1.Range("D3").Value
C1 = Sheet1.Range("D3").Value
Pi = Application.Pi()
coe = 50
id = Sheet1.Range("D4").Value * coe
X = 250
Y = 300

ReDim cable(Cn)
ReDim cable_index(Cn)
For i = 1 To C1
      Set cable(i) = Sheet1.Shapes.AddShape(msoShapeOval, X, Y, id, id)
      cable_index(i) = cable(i).Name
        cable(i).Select
      With Selection.ShapeRange
         With .Fill
        .Visible = msoTrue
        .ForeColor.SchemeColor = 13
         End With
         With .Line
        .Weight = 0.5
        .ForeColor.SchemeColor = 64
         End With
      End With
    Next
End Sub

代码段:

1. Shapes.AddShape(msoShapeOval, x, y, w, h)'画出一个圆形

解释:worksheet对象msoShapeOval:圆形标识符,这个是微软定死的,就这么用就对了x:圆形左位置,y:圆形上位置,w:圆形宽,h:圆形高

2. 常量coe可以更改,以便调整大小

3. ForeColor.ShemeColor为颜色,等于号后面的数字为颜色索引号,大家可在搜索中输入"颜色索引",一看就懂。

 小结

  第一篇文章相对简单,只是让大家开始了解VBA是如何实现自动画图的。

  关注我,带你体验不一样的编程乐趣。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类的六个默认成员函数

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6个默认成员函数。 2.构造函数 构造函数是一个特殊的成员函数,名字与…

STM32F4 | 跑马灯实验

文章目录一、 STM32F4 IO 口简介二、硬件设计三、软件设计1.位带操作(F7除外)四、实验现象五、STM32CubeMX 配置 IO 口输入在本章中,我们将通过代码控制 ALIENTEK 阿波罗 STM32 开发板上的两个 LED 灯 DS0 和 DS1 交替闪烁,实…

【salesforce Admin必备】-想到啥写点啥

【salesforce Admin必备】-想到啥写点啥 文章目录【salesforce Admin必备】-想到啥写点啥前言一,货币相关1.带汇率的多种货币-Activate multiple currencies with exchange rates1.1 启用多币种2.Update the Exchange Rate with ACM2.1启用高级货币管理(…

数据结构【树和二叉树的相关知识和题目】

文章目录引言:一、树和二叉树的相关知识(一、)什么是树1.树(1.)日常生活中的树(2.)树的基本概念(非线性结构)(3.)代码人眼中的树:&…

ORB-SLAM2 --- Tracking::UpdateLocalKeyFrames函数

目录 1.函数作用 2. 函数步骤 3.code 4.函数解析 4.1 记录共视 4.2 更新局部关键帧(mvpLocalKeyFrames) 4.3 更新当前帧的参考关键帧,与自己共视程度最高的关键帧作为参考关键帧 1.函数作用 跟踪局部地图函数里,更新局部…

【在SpringBoot项目中删除相册数据--Service层】

由于AlbumMapper.java中已经实现了“根据id删除数据表中的相册数据”,所以,可以直接从Service开始开发此功能。 先在IAlbumService中添加抽象方法: /** * 删除相册 * param id 尝试删除的相册的id */ void delete(Long id); 然后&#xf…

[附源码]Python计算机毕业设计SSM基于web的烟草售卖系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Android Studio Gradle 无限 Build「假死」

Android Studio Gradle 无限 Build「假死」 解决方案 工程配置 Gradle 的 gradle.properties 文件中添加如下代码: org.gradle.daemontrue org.gradle.paralleltrue然后重新 Sync 工程,漫长等待依赖下载完成后,重新 Build 项目即可 补充 …

【Unity 3D 从入门到实战】Unity 3D 组件总结

目录 一,前言 二,常用组件 1,Transform 组件 2,Mesh Filter 组件 3,Box Collider 组件 4,Rigidbody 组件 5,脚本组件 三,总结 一,前言 组件是 Unity 3D 中的重要…

Attention Is All You Need

摘要 The dominant sequence transduction models 显性序列转换模型。complex recurrent 复杂的递归。convolutional neural networks 卷积神经网络。an encoder and a decoder 编码器和解码器。The best performing models性能最佳的模型the encoder →\rightarrow→ an atte…

D. Lucky Chains

传送门 题意:给你两个数x,y让你求满足xk,yk并且GCD(xk,yk)!1的最小值。 思路:要求满足xk,yk并且GCD(xk,yk)!1的最小值,那么就相等于存在(xk)%d(yk)%d 变化一下就等于(x-y)%d0,那么就是找x-y的约数,然后这个约数可能是…

疫情散去想看电影,用css动画模拟一个阿凡达2完美开场

在历经了艰苦卓绝的3年抗疫后,疫情终于还是来了,很多小伙伴变成了小洋人酸奶,我相信过不了多少天,疫情终将散去,那个时候就可以和家人走进电影院啦。 今天用css布局一个阿凡达2的影院场景,提前过一过瘾。 目…

ARM 异常返回地址

armv7-a armv8-a linux5.15 Preferred exception return address armv7 exception return address correction armv8-32 exception return address correction armv8-64 没有查到link value offset表 arm32 data abort exception为例 周期1周期2周期3周期4周期5指令1pc-8取指…

[附源码]Node.js计算机毕业设计电影推荐系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

【LSTM预测】基于鲸鱼算法优化双向长短时记忆BiLSTM(多输入单输出)航空发动机寿命预测含Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

CloudCompare算法库(CCCorelib)编译与使用

文章目录一、简介二、编译过程三、举个栗子优秀的算法库,值得所有点云爱好者去使用和研究*~*。 一、简介 之前一直没注意到CloudCompare的作者(光头大佬)已经将CloudCompare的算法库与其可视化部分进行了分离,今天正好有同学问了这…

以太坊地址Address介绍附代码示例

Address是什么 通常情况下,地址代表一外部账户或合约账户,它们都可以在区块链上接收(目标地址)或发送(源地址)。 更具体地说,它是根据ECDSA算法,从公钥的Keccak-256哈希值的最后20个…

MapRecuce 词频统计案例

文章目录初探MapReduce一、MapReduce核心思想二、MapReduce编程实例-词频统计思路1、map阶段(映射)2、reduce阶段(归并阶段)三、词频统计编程实现1、准备数据文件2、将文件上传到hdfs指定路径3、在java里创建词频统计映射器类4、创建词频统计驱动类5、运行词频统计驱动类&#…

【机器学习】SVM多分类问题及基于sklearn的Python代码实现

SVM多分类问题及Python代码实现1. 什么是SVM?2. SVM的分类3. SVM决策函数类型4. SVM多分类的Python代码实现参考资料1. 什么是SVM? 对于这个点已经介绍的非常多了,不管是西瓜书还是各种博客,就是需要找到一个超平面,用…

【Redis】Zset和Hash类型

Hash类型 Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Hash 类型的底层数据结构是由压缩列表或哈希表实现的: 如果哈希类型元素小于512个,所有值的大小小于64字节。Redis…