ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: dongdonggege

[求助] 字符串变数组

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-18 11:52 | 显示全部楼层
dongdonggege 发表于 2022-12-18 10:56
我改成VBA.Trim(Mid(xPath, x + 1)),但是数组就不对了。

因为空格不规范,这是字体编码吧 不推荐用arr(0)(0) ,用 arr(1,1)
444.png

11.zip

469 Bytes, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2022-12-18 12:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dongdonggege 发表于 2022-12-18 10:48
谢谢老师,但是我这是powerpoint做的,在ppt中,xPath = Application.Trim(Mid(xPath, x + 1))运行不了啊 ...

那只能就現況//兩個變一個
xPath = Replace(Mid(xPath, x + 1), "  ", " ")

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 12:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 12:22 | 显示全部楼层
准提部林 发表于 2022-12-18 12:04
那只能就現況//兩個變一個
xPath = Replace(Mid(xPath, x + 1), "  ", " ")
  1. Sub Test_A1()
  2.     Dim xPath, x%, Tr, Ar
  3.     xPath = " M 0 0  C 0.001 0.04533  0.011 0.08667  0.028 0.11333  C 0.028 0.11467  0.055 0.15067  0.055 0.14933" & _
  4.     " C 0.07 0.16933  0.079 0.19733  0.079 0.22667  C 0.079 0.28533  0.044 0.332  0 0.33333" & _
  5.     " C -0.044 0.332  -0.079 0.28533  -0.079 0.22667  C -0.079 0.19733  -0.07 0.16933  -0.055 0.14933" & _
  6.     " C -0.055 0.15067  -0.028 0.11467  -0.028 0.11333  C -0.011 0.08667  -0.001 0.04533  0 0  Z"
  7.     x = InStr(xPath, "C")
  8.     xPath = Replace(Mid(xPath, x + 1), "  ", " ")
  9.     xPath = Trim(Replace(xPath, "Z", ""))
  10.     Tr = Split(xPath, "C")
  11.     ReDim Ar(UBound(Tr))
  12.     For i = 0 To UBound(Tr)
  13.         Ar(i) = Split(Trim(Tr(i)), " ")
  14.     Next i
  15. End Sub
复制代码

收到,谢谢老师。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 12:24 | 显示全部楼层
perfect131 发表于 2022-12-18 11:52
因为空格不规范,这是字体编码吧 不推荐用arr(0)(0) ,用 arr(1,1)

谢谢老师惠顾,帮助。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 12:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
perfect131 发表于 2022-12-18 11:52
因为空格不规范,这是字体编码吧 不推荐用arr(0)(0) ,用 arr(1,1)

这是svg,我想把PowerPoint物体运动的路径画成图形。
下图是我画出来的路径图形。
无标题2.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 13:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
perfect131 发表于 2022-12-18 11:52
因为空格不规范,这是字体编码吧 不推荐用arr(0)(0) ,用 arr(1,1)

看,左边的是路径线,右边的是画的线。
无标题3.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-18 13:36 | 显示全部楼层
本帖最后由 micch 于 2022-12-18 13:41 编辑

划线用不着这样数组吧,直接x和y分别一个数组就行了,搞6个没必要

image.png
  1. Sub cSplit()
  2.    
  3. '字符串一般是M开始,后面跟着坐标,然后就是C后面跟着六个数,以Z结束。我想把它变成一个二维数组。
  4. 'Path = " M 0 0  C 0.001 0.04533  0.011 0.08667  0.028 0.11333  C 0.028 0.11467  0.055 0.15067  0.055 0.14933" & _
  5. '" C 0.07 0.16933  0.079 0.19733  0.079 0.22667  C 0.079 0.28533  0.044 0.332  0 0.33333" & _
  6. '" C -0.044 0.332  -0.079 0.28533  -0.079 0.22667  C -0.079 0.19733  -0.07 0.16933  -0.055 0.14933" & _
  7. '" C -0.055 0.15067  -0.028 0.11467  -0.028 0.11333  C -0.011 0.08667  -0.001 0.04533  0 0  Z"
  8. '数组得数如下?
  9. 'arr(0)(0) = 0.001: arr(0)(1) = 0.04533
  10. 'arr(0)(2) = 0.011: arr(0)(3) = 0.08667
  11. 'arr(0)(4) = 0.028: arr(0)(5) = 0.11333
  12. '……
  13. 'arr(7)(0) = -0.011: arr(7)(1) = 0.08667
  14. 'arr(7)(2) = -0.001: arr(7)(3) = 0.04533
  15. 'arr(7)(4) = 0: arr(7)(5) = 0
  16.    
  17.     Const Pth  As String = " M 0 0  C 0.001 0.04533  0.011 0.08667  0.028 0.11333  C 0.028 0.11467  0.055 0.15067  0.055 0.14933" & _
  18.     " C 0.07 0.16933  0.079 0.19733  0.079 0.22667  C 0.079 0.28533  0.044 0.332  0 0.33333" & _
  19.     " C -0.044 0.332  -0.079 0.28533  -0.079 0.22667  C -0.079 0.19733  -0.07 0.16933  -0.055 0.14933" & _
  20.     " C -0.055 0.15067  -0.028 0.11467  -0.028 0.11333  C -0.011 0.08667  -0.001 0.04533  0 0  Z"
  21.    
  22.     s = Replace(Pth, "M", "")
  23.     s = Replace(s, "C", "")
  24.     s = Replace(s, "Z", "")
  25.     While InStr(s, "  ") > 0
  26.         s = Replace(s, "  ", " ")
  27.     Wend
  28.    
  29.     ar = Split(s)
  30.     k = 1
  31.     For Each a In ar
  32.         If Len(a) > 0 Then
  33.             k = k + 1
  34.             i = k \ 2
  35.             j = k Mod 2 + 1
  36.             Cells(i, j).Value = a
  37.         End If
  38.     Next
  39.    
  40. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 14:35 | 显示全部楼层
micch 发表于 2022-12-18 13:36
划线用不着这样数组吧,直接x和y分别一个数组就行了,搞6个没必要

谢谢,之前是PowerPoint里物体运动的路径path,后来改成根据路径计算,画成像路径一样的图形。
比如说,正常的路径是path1,不移动物体,而移动路径后的路径是path2,
path1 = " M 0 0  C 0.001 0.04533  0.011 0.08667  0.028 0.11333  C 0.028 0.11467  0.055 0.15067  0.055 0.14933" & _
" C 0.07 0.16933  0.079 0.19733  0.079 0.22667  C 0.079 0.28533  0.044 0.332  0 0.33333" & _
" C -0.044 0.332  -0.079 0.28533  -0.079 0.22667  C -0.079 0.19733  -0.07 0.16933  -0.055 0.14933" & _
" C -0.055 0.15067  -0.028 0.11467  -0.028 0.11333  C -0.011 0.08667  -0.001 0.04533  0 0  Z"

path2 = " M 0.22084 -3.33333E-6 C 0.22188 0.04537 0.23178 0.08658 0.24879 0.11343 C 0.24879 0.11459 0.27587 0.1507 0.27587 0.14931" & _
" C 0.2908 0.16945 0.29983 0.19723 0.29983 0.22662 C 0.29983 0.28542 0.26476 0.33195 0.22084 0.33334" & _
" C 0.17691 0.33195 0.14184 0.28542 0.14184 0.22662 C 0.14184 0.19723 0.15087 0.16945 0.1658 0.14931" & _
" C 0.1658 0.1507 0.19289 0.11459 0.19289 0.11343 C 0.2099 0.08658 0.2198 0.04537 0.22084 -3.33333E-6 Z"
画正常路径的图形,程序是正确的。而改成画移动路径的图形时,中心点的坐标就错误了。

移动路径画路径的图形.rar

17.75 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-18 14:38 | 显示全部楼层
micch 发表于 2022-12-18 13:36
划线用不着这样数组吧,直接x和y分别一个数组就行了,搞6个没必要

左边的图形是未移动时,画的图形是正确的;
右边的图形是移动了路径,画路径图形,中心点坐标,不对了。帮忙修改,谢谢。

无标题4.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 04:26 , Processed in 0.042781 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表