【问题标题】:Loop through excel rows and call VBA functions循环遍历 excel 行并调用 VBA 函数
【发布时间】:2016-07-21 00:08:23
【问题描述】:

我需要能够遍历我的行(特别是 B 列),并使用某个单元格中的数字,以便使用该行中的其他单元格执行特定功能。例如,规则#1 表示我需要在规则# 旁边的单元格中查找路径的最后修改日期,但每个规则的任务不同。

我是 VBA 新手,我一直在努力设置循环并将变量传递给不同的子程序,非常感谢任何帮助。为了清楚起见,我正在寻找有关循环和传递变量的语法帮助

谢谢!

参考图片:The spreadsheet

The attempt at sketching out the code

Private Sub CommandButton1_Click()
    Dim x As Integer
    NumRows = Range("B2", Range("B2").End(xlDown)).Rows.Count
    Range("B2").Select
    For x = 1 To NumRows
        If Range(RowCount, 1).Value = 1 Then
             RuleOne (RowCount)
        End If
    Next

    'Dim RowCount As Integer
    'RowCount = 1
    'Worksheets("Sheet2").Cells(1, 2) = Worksheets("Sheet1").UsedRange.Row.Count

    'While RowCount < Worksheets("Sheet1").Rows
      'If Worksheets("Sheet1").Cells(RowCount, 1).Value = 1 Then
          'RuleOne (RowCount)
      'End If
    'Wend
End Sub

Sub RuleOne(i As Integer)
    'use filedatetime and path from i cell
    'Worksheets("Sheet2").Cells(1, 1) = FileDateTime(C, i)
    Worksheets("Sheet2").Cells(1, 1) = "hello"
End Sub

Sub RuleTwo(i As Integer)
    Worksheets("Sheet2").Cells(1, 1) = "hello"
End Sub

【问题讨论】:

  • 请编辑您的问题以在问题正文中包含代码,而不是作为快照。
  • 您是否遇到错误?如果是这样,请尝试将括号从传递给函数的变量中移开。 RuleOne RowCount
  • 知道了,谢谢@skkakkar!
  • @Nathan_Sav 这个问题完全不同,因为它试图遍历文件夹中的子文件夹,但我真的很感激。

标签: vba excel


【解决方案1】:

尝试将Range(RowCount, 1).Value = 1 更改为Cells(x, 2).Value = 1

【讨论】:

    【解决方案2】:

    变量 RowCount 尚未初始化/设置。 我认为这就是这个变量应该是 B 列中的数字

    RowCount = Cells(x, "B").Value
    

    我还注意到变量 NumRows 似乎比应有的值小一(所以如果最后一行是 1,它会跳过它)。所以我改用这个:

    NumRows = Cells(Rows.Count, "B").End(xlUp).Row
    

    所以试试这个代码:

    Sub CommandButton1_Click()
        Dim x As Integer
        NumRows = Cells(Rows.Count, "B").End(xlUp).Row
        For x = 1 To NumRows
            RowCount = Range("B" & x).Value
            If RowCount = 1 Then
                 RuleOne (x)
            End If
        Next
    
        'Dim RowCount As Integer
        'RowCount = 1
        'Worksheets("Sheet2").Cells(1, 2) = Worksheets("Sheet1").UsedRange.Row.Count
    
        'While RowCount < Worksheets("Sheet1").Rows
          'If Worksheets("Sheet1").Cells(RowCount, 1).Value = 1 Then
              'RuleOne (RowCount)
          'End If
        'Wend
    End Sub
    
    Sub RuleOne(i As Integer)
        'use filedatetime and path from i cell
        'Worksheets("Sheet2").Cells(1, 1) = FileDateTime(C, i)
        Worksheets("Sheet2").Cells(1, i) = "hello"
    End Sub
    
    Sub RuleTwo(i As Integer)
        Worksheets("Sheet2").Cells(1, 1) = "hello"
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多