测试 - 如果不为空,则使用InputBox提示乘数

时间:2018-02-15 21:43:51

标签: vba excel-vba excel-2013 excel

这就是我想要的,但是当谈到循环时我很绿:

如果(G1<>“”,输入框用于范围G2的乘数:G的LastRow,“”)

循环通过列BZ1(或最好是最后一列)

或者:

G1:BZ1每个都包含订单集的名称。我需要手动输入每个订单集的使用次数。 D2:D1001是每个项目中出现项目的次数。我需要将D2:D1001乘以输入框的编号,然后将每个项目的结果输入G2:G1001。

我有多个订单集,并且每次运行此宏时,需要通过不同数量的商店将每个订单集多个。订单集在列中,项目在行中。

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题 - 只需将Sheet1更改为您工作表的名称。

首先我们得到最后一列数据用于我们的第一个循环(通过获取lastcol的值),然后我们开始循环遍历列。我们通过multiplierInputBox分配一个值,之后我们遍历列中的每个单元格并将其乘以您输入的数字。然后我们转到下一列,直到我们用完数据。

我已更新InputBox中的文字,每次都会显示每列的标题文字。

Sub Test()

Dim sht As Worksheet, lastcol As Long, lastrow As Long, multiplier As Integer

Set sht = ThisWorkbook.Worksheets("Sheet1")
lastcol = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column

For i = 7 To lastcol
    If Cells(1, i) <> vbNullString Then
        multiplier = InputBox("Number of stores using set " & Cells(1, i) & ".")
        lastrow = sht.Cells(sht.Rows.Count, 4).End(xlUp).Row

        For j = 2 To lastrow
            On Error Resume Next
            Cells(j, i).Value = Cells(j, 4).Value * multiplier
            On Error GoTo 0
        Next j
    End If
Next i

End Sub

Usingthemacro