旧事阑珊 发表于 2018-6-2 06:30:19

请教前辈:关于文字修改删除相关的问题

我想替换图形中的单行文本,但是遇到了问题,所以上来请教各位前辈:
1、我在图形中将需要替换的文本设置成唯一名称,比如叫“A文本”,整个图形中的单行文本,只有一处叫“A文本”,我用 strFind = "A文本"
strReplace = "B文本",可以替换掉。但是如果我文字打错了,想把文本改成“C文本”。问题来了,再用strFind来查找,可是图形中叫“B文本”的有很多,它不是唯一的,用strReplace替换后就会出错。
2、有没有一种方法,锁定文本的句柄,通过句柄来实现修改文本,因为我查了相关资料,说是句柄是唯一的。如果真是这样,不管文本是什么,都能通过句柄来锁定它,来修改,这样就不会乱了,不知道我这个想法是不是对的。
3、如果上面的方法都不行,是否能通过删除文本,然后再插入新文本来实现?如果这样也可以,我在程序运行时,第一个动作是删除文本,然后在固定的位置插入新文本,这样也不会乱了。
以上只是我的想法,VBA刚入门,许多不懂,只能一步一步摸索,文本操作这一块,只会用strFind和strReplace 来替换,其它方法都不会,代码不知如何写,实在没办法了,才上来打扰各位前辈,希望有知道的前辈不吝赐教,贴一段代码指导一下,谢谢!

zzyong00 发表于 2018-6-2 16:13:49

你想确定某个特定文本,可以用你说的handle,对于固定的一张图,图中给定的文本的handle是不变的,也可以给这个特定文本加扩展属性,
但一般来说,给这个特定文本加扩展属性靠谱一点

旧事阑珊 发表于 2018-6-2 16:36:04

zzyong00 发表于 2018-6-2 16:13
你想确定某个特定文本,可以用你说的handle,对于固定的一张图,图中给定的文本的handle是不变的,也可以给 ...

谢谢你的回复,依然不是太明白!

dong20030432 发表于 2018-6-4 12:13:27

旧事阑珊 发表于 2018-6-2 16:36
谢谢你的回复,依然不是太明白!

自己查一下setxdata相关的知识(VBA帮助里面就有),看下例子,就知道zzyong00版主说的意思了,也就是给刚才替换过的文字增加特殊标记,到时候可以按标记识别,就可以与其它文本进行区别了。

mikewolf2k 发表于 2018-6-4 13:04:14

1. 其实这个问题完全可以通过仔细检查规避掉。你这些试图修正错误的方式纯属浪费时间精力。
2. 句柄并不适用。假设用户删除重建的某个文本,即使文本原样显示着,但是句柄变了,如果按句柄去区分,那么就漏掉了。
3.取决于你的具体应用吧,没什么特殊要求,就通过仔细检查替换文字来避免问题,不要复杂化了。

1005100717 发表于 2018-6-4 15:09:35

strReplace = "B文本" ,完全可以变成 “B文本 ”,加个空格,显示基本一样,又能区分内容。

旧事阑珊 发表于 2018-6-5 13:08:52

dong20030432 发表于 2018-6-4 12:13
自己查一下setxdata相关的知识(VBA帮助里面就有),看下例子,就知道zzyong00版主说的意思了,也就是给 ...

谢谢你的回复!大概明白了,我去查一下帮助文档,谢谢!

旧事阑珊 发表于 2018-6-5 13:09:49

mikewolf2k 发表于 2018-6-4 13:04
1. 其实这个问题完全可以通过仔细检查规避掉。你这些试图修正错误的方式纯属浪费时间精力。
2. 句柄并不适 ...
谢谢你的回复!

旧事阑珊 发表于 2018-6-5 13:11:04

1005100717 发表于 2018-6-4 15:09
strReplace = "B文本" ,完全可以变成 “B文本 ”,加个空格,显示基本一样,又能区分内容。

你说的和我的不一致,但仍要谢谢你的回复!
页: [1]
查看完整版本: 请教前辈:关于文字修改删除相关的问题