金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 755|回复: 7

关于vba代码删除特定板块名字

[复制链接]

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
发表于 2024-3-10 23:25 | 显示全部楼层 |阅读模式
有劳帮我写一段删除特定板块名字的vba代码:

1、环境情况:
每天跑程序保留板块名为:日期-xxx
如:2023-12-01-当周期信号、2023-12-02-当周期信号等
2、需求:
现在想把 2022开头的的历史板块都删掉
要全部分类、分部板块都筛选+删除

有劳写一下对应的vba中的运行代码
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-3-11 09:30 | 显示全部楼层
看下这里,板块的相关操作

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2024-3-11 10:58 | 显示全部楼层
我有几千个块板,直接deleteblock要一个名字一个字输,那不可能操作完的啊,而且我有些分类的板块不想删。
能不能用类似pel的取字符串名字的公式STRFIND来删 ,。
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-3-11 11:03 | 显示全部楼层
这个只能一个个删的,你可以循环然后把要删的名字一个个循环后删除
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2024-3-11 11:09 | 显示全部楼层
资深技术02 发表于 2024-3-11 11:03
这个只能一个个删的,你可以循环然后把要删的名字一个个循环后删除

我不是要把分类里的全部板块删掉,只要删开头5个字符为 "2022-"的板块,其它的23年24年的板块数据和其它数据,我是要保留的。

循环删就把分类下面全部板块都删了啊。

回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2024-3-11 11:10 | 显示全部楼层
比如pel里就有类似的公式:STRFIND

在字符串中查找另一个字符串。
STRFIND(STR,S1,N),从字符串STR的第N个字符开始查找字符串S1,返回找到的位置,若没有找到就返回0。
例如:
STRFIND('ABCDEFGH','CDE',1)返回3。
所属函数组:字符串函数
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-3-11 11:10 | 显示全部楼层
一样的,就是循环所有板块然后如果名字是符合你条件的话,才进行删除
这个应该是vba里面字符串啥的比较的操作
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

2641

帖子

2641

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-3-11 13:18 | 显示全部楼层
本帖最后由 资深技术03 于 2024-3-11 13:20 编辑

没有方法获得全部的分类。下面的示例是删除指定分类下含有2022字符的示例,你可以参考修改
[Visual Basic] 复制代码
Sub del_Block()
    Set Block = CreateObject("Stock.Block")
    Dim my_Array
    Set my_Array = CreateObject("Stock.ArrayString")

    '获取指定分类下的板块集合
    call Block.GetTypeBlock("自选",my_Array)
      
    '筛选以指定指定字符串开始的板块名称
    target_name="2022" 
    for i = 0 to my_Array.count-1
            '得到指定板块名称的前4个字符部分
            balock_name = Mid(my_Array.getat(i), 1, 4)

        if StrComp(target_name, balock_name, 0)=0 then 
                application.MsgOut "删除板块:"&my_Array.getat(i)
                call Block.DeleteBlock ("自选",my_Array.getat(i))
        end if
    next


    set Block = nothing 
    set my_Array = nothing 
end sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-22 17:15 , Processed in 0.172791 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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