我正在Excel中的VB中编程一个宏,它将在单元格表/范围内找到一个填充的(不是空的)单元格。 我知道一些C ++,但是我不认为在VB中创建一个宏不会太困难。

这里的问题是宏找不到填充的单元格,而是跳过了它。 我做错了什么?

Sub Datum()
Dim Horizontal As Integer
Horizontal = 10

Dim Vertical As Integer
Vertical = 10

Dim h As Integer
Dim v As Integer
h = 0
v = 0

Range("A1").Select


For v = 0 To Vertical

    For h = 0 To Horizontal
        If ActiveCell.Value = True Then
            Exit For
            Exit For
            End If

    ActiveCell.Offset(0, 1).Select

    Next

ActiveCell.Offset(1, 0).Select

h = 0
Next

MsgBox ActiveCell.Value


End Sub

ps。 我已经在互联网上进行了研究,但似乎没有一个人像我这样有这个问题。

===============>>#1 票数:1

您不应该选择每个单元格,因为这非常耗时。 范围是否为10 * 10并不重要,但我认为这是一个实验。

这段代码取代了您的循环。 我用了你的变量。

Dim Found as Boolean

Found = False

With ActiveSheet

  For v = 1 to vertical
    For h = 1 to horizontal
      If IsEmpty(.Cells(v, h).Value) Then
        Found = True
        Exit For
      End If
    Next
    If Found then
      Exit For
    End If
  Next

  If Found Then
    ' Action empty cell (v,h) found in range
  Else
    ' Action no empty cell in range
  End If 

在此实验中,您的范围是10x10。 你知道真实的尺寸吗? 您是否要在运行时确定使用范围? 在我们提供总体解决方案之前,必须解决这些问题。

===============>>#2 票数:0

部分问题将是我认为的循环:

Exit For
Exit For

这不会执行您想要的操作,因为第一个命令将使您跳出内部For循环,并且您永远也不会遇到第二个命令,因此您将继续执行外部for循环。

使用Do-While类型循环可能会更好:

Dim blnFound as Boolean
Dim v as integer
dim h as integer
blnFound = false
v = 0
Do while v <= Vertical and not blnFound

    h = 0

    Do while h <= Horizontal and not blnFound
        If ActiveCell.Value = True Then
            blnFound = True
        End If

        h=h+1
        ActiveCell.Offset(0, 1).Select

    loop

    v = v+1
    ActiveCell.Offset(1, 0).Select

loop

我也不确定您的Offset调用是否可以满足您的要求,尤其是在转到下一列的顶部时。 您最好使用vh值来选择要更精确检查的单元格(例如ActiveSheet.Cell(h,v)

注意:我尚未测试此代码,因此可能需要进行调整,但是应该给出一个主意。

  ask by Jan translate from so

未解决问题?本站智能推荐:

1回复

如何使用宏VB替换和插入Excel单元格

以下是我的宏功能的一部分。 用户可以输入&输入(r,47)的像元值。 我想将输入的“&”替换为“&”,再加上“ amp;”。 (注意:在此编辑器中使用了复杂的方法“&”和后跟“ amp;”作为放大器;”) 我尝试了替代,但是当我尝试保存宏时它给出了语法错误。 目前,我的宏函数中
4回复

VB Excel宏毫秒定时

我正在尝试在VB中为Excel电子表格编写一个宏,该宏以特定间隔执行,该间隔由电子表格本身中包含的值(以Hz为单位)定义。 我的问题是,我发现以这种方式完成自动宏的代码似乎仅允许秒精度,因此1Hz以上的任何频率都是不可能的。 如果可能的话,我希望能够达到10Hz左右,这需要毫秒级的精度。
1回复

如何加速Excel VB宏

我正在尝试加速Excel VB宏。 我已经尝试了以下5种选择。 但是我想知道是否可以进一步缩短执行时间。 我在用户博客中找到了2种无法使用的替代方法。 在用户博客中也找到了一种替代方法,但并不了解。
2回复

VB,如果单元格在Excel

如果单元格在给定范围内,我在Excel中制作了一个VB makro来执行某些操作,但是当我执行它时,它给了我一个错误,我不明白为什么。 错误是:
2回复

Excel唯一值查找器VBA宏遗漏了2个值

我正在使用vba宏在特定列中查找唯一值,如下所示: 据我所知,这应该适用于我拥有的数据,但是目前(我尝试的每一列都需要进行此计算),由于某些原因,它会跳过其中的2个值。 例如,在我应该输出5个值的地方,我得到3。 任何想法? 这是错误的做法吗?
1回复

Excel VB宏从另一个工作表中查找值,然后更改当前工作表中的单元格值

我有一个包含两个工作表的文件。 我需要运行一个宏,它在sheet2上向下看A列,直到它为空。 它需要从sheet1上的sheet2列A中的单元格中查找值。 如果找到,则更改列AP的值。 如果未找到,则跳到下一个搜索下一个值。 这就是我到目前为止所拥有的。 我已经能够将它修复到我不
1回复

MS-Excel VB宏-筛选和传输

我以学习Microsoft Excel为主题,我已经下了任务,要使用VBA宏制作过滤器。 这就是我所拥有的: 工作表(“主要”),工作表(“美国”),工作表(“亚洲”)和工作表(“欧洲”) 这是我要做的: 将一些数据从用户剪贴板粘贴到Workshee
3回复

VB Excel:如何使用表单/宏移动工作表

我在将工作表转移到另一个工作簿时遇到问题。 我已经在第一个工作簿中编写了几个宏,以及1或2个表格,并且需要能够将包含这些宏和表格的工作表移到新的工作簿中。 如果我只是做一个简单的工作表副本,则新版本的工作表将引用旧工作表的宏,并且当我尝试在第二个工作表中加载时,我编写的(在第一个工作表中)的
1回复

MS Excel宏运行与VB脚本不同吗?

我每天早上都有使用Windows Task Scheduler中的任务打开的VB脚本文件。 该脚本将打开MS Excel,然后运行存储在工作簿中的宏。 问题是,如果我使用VB脚本文件启动宏,则宏的运行方式与从工作簿中自己运行该宏时的运行方式不同。 具体来说,当我从VB脚本文件开始运行宏时,
1回复

将Excel工作表名称传递到宏VB

考虑到我对VB的了解很少,我认为这应该很简单:)我记录了一个宏,用于为当前工作表上的范围创建一个数据透视表。 当然,这给我的是为该特定工作表创建数据透视表的代码。 我正在尝试调整代码以获取活动工作表的名称,以便可以在不同工作表中使用此宏。 我试图搜索并确切地找到如何检索名称,然后将该名称提