小编JD1*_*997的帖子

如何将一系列For循环块缩短为一个

我在这里有一系列包含For循环的代码块,我想缩小这个代码,以便它可以以相同的方式工作,但只要这些代码块中的一个,而不是它的12个块.长度.正如您所看到的,每个块都是一组6,我在这里遇到的挑战是缩短代码,同时将变量保持在6个组中.在此程序中,值在两列中生成并按顺序执行.例如:

当m为1到6时,对于所有六个值,值p需要为1

当m为7到12时,对于所有六个值,值p需要为2

当m为13到18时,对于所有六个值,值p需要为3

等等....

For m = 1 To 6 'Riser
        For p = 1 To 1 'Car
            If Not IsEmpty(ws.Range("Riser" & m)) And Not IsEmpty(ws.Range("Car_" & p)) Then
                ws.Range("C1").Offset(m).Value = p
                Exit For
            End If
        Next p
    Next m

For m = 7 To 12 'Riser
    For p = 2 To 2 'Car
        If Not IsEmpty(ws.Range("Riser" & m)) And Not IsEmpty(ws.Range("Car_" & p)) Then
            ws.Range("C1").Offset(m).Value = p
            Exit For
        End If
    Next p
Next m

For m = …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

1
推荐指数
1
解决办法
111
查看次数

如何使不连续的单元格范围适用于每个引用的单元格

我有一个不连续的范围,我希望用户在该范围内的每个单元格中写入的内容显示在我创建的表格的列中.在我的表的第一列中,当用户在一个指定的单元格中添加一个值直到18时,我在表中的每个生成条目中都有程序编号.我将范围中的每个单元格重命名为"Space_" (某些数字)".即使我已经写了三个指定的单元格,我的表只显示第一个指定单元格中的第一个值.

在此输入图像描述

到目前为止,这是我的代码:

Sub test2()

Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Sheets("Sheet1")
Dim i As Integer
Dim rng As Range

Set rng = ws.Range("Space_7, Space_10, Space_13, Space_16, Space_19, Space_22, Space_25, Space_28, Space_31, Space_34, Space_37, Space_40, Space_53, Space_56, Space_59, Space_62, Space_65, Space_68")


ws.Range("A13:A31,B13:B31").ClearContents

For i = 1 To 18

If Not IsEmpty("rng") Then
ws.Range("A12").Offset(1).Value = i
End If
Exit For
Next i

If Not IsEmpty("rng") Then
    ws.Range("B12").Offset(1).Value = rng.Value
End If

End …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-2010

0
推荐指数
1
解决办法
65
查看次数

标签 统计

excel ×2

excel-vba ×2

vba ×2

excel-2010 ×1