小编use*_*977的帖子

Excel VBA宏 - 循环遍历筛选表的列

我有一个包含大量数据(气象站目录)的电子表格,它可以计算用户输入的纬度和经度最近的气象站.此工作表通过计算距离输入点的距离,使用SMALL()对这些距离进行排名,然后使用公式执行索引(匹配())类型计算的excel TABLE/List(使用排名(1最接近,2是第2最接近等)来实现此目的.

工作表虽然很慢,但工作得相当好 - 而excel Tables允许按照各种标准(例如年份记录的长度等)对气象站目录进行高级分类.

我有一个VBA宏,我写的曾经工作,但当我试图修复它时停止工作(太棒了).

VBA宏的目的是编写带有纬度/长度/气象站名称的Google Earth KML文件,然后将该文件启动到Google地球中,以便用户可以看到设置站点位置周围的邻近站点(之前输入的站点)由用户).

不幸的是,我使用的原始方法无法处理列表的过滤结果,因此如果用户过滤了结果(例如,前4个气象站被过滤掉了)宏仍然会编写前四个气象站那些不可见/被过滤的.

对我来说问题变得更加困难,因为我希望只有一个宏用于具有可过滤表的四个工作表 - 用于不同的数据类型.

在此阶段,宏需要的数据存储在表中,名称相同的表格列:{"STATION","LONGITUDE","LATITUDE"}在不同的工作表中.写入KML文件所需的大多数KML字符串存储在另一个隐藏的工作表"KML"中.

通过每个页面上的按钮启动宏.

我知道可能有一个使用".SpecialCells(xlCellTypeVisible)"的解决方案 - 我已经尝试过广泛使用它来使用我的表 - 但到目前为止没有运气 - 可能是由于我缺乏正式的培训.

任何帮助表示赞赏,无论是解决方案还是建议!我的错误代码道歉,问题循环和破损的代码区域大约有一半 - 在'查找活动表上的所有表格后:

Sub KML_writer()
Dim FileName As String
Dim StrA As String
Dim NumberOfKMLs
Dim MsgBoxResponse
Dim MsgBoxTitle
Dim MsgBoxPrompt
Dim WhileCounter
Dim oSh As Worksheet
    Set oSh = ActiveSheet
'Prompt the Number of Stations to Write to the KML File
NumberOfKMLs = InputBox(Prompt:="Please Enter the number of Weather Stations to generate within the Google Earth …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel ×1

excel-vba ×1

vba ×1