.End (xlUp) .row идет слишком далеко

Это лучший способ сделать эту самую обобщающую форму и просто отлично работать для меня!

<div contenteditable="true" name="choice1" class="textfield" max="255"></div>
    $('.textfield').on("keypress paste", function (e) {
        if (this.innerHTML.length >= this.getAttribute("max")) {
            e.preventDefault();
            return false;
        }
    });
0
задан Basho 13 July 2018 в 09:38
поделиться

2 ответа

Проблема заключалась в диапазоне ty, который был F2: I2, в то время как он должен был быть F2: I

Sub test0()
Dim ws As Worksheet
Set ws = Sheets("Detail")

Dim lr As Long
lr = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
Range("F:I").NumberFormat = "General"
Dim arr
arr = Array("MFR", "CUSTLINE#", "PRICE (DYP)", "DELIVERY")
ws.Range("F1:I1").Value = arr
Dim ty
ty = Array("=IF(H2=""NB"","""",AY2)", "=A2", "=IF(P2="""",""NB"",P2)", "=IF(BR2>(D2+AM2),""STOCK"",IF(AR2=""0 Weeks"","""",SUBSTITUTE(AR2,"" Weeks"","" WKS"")))")
ws.Range("F2:I2" & lr).Formula = ty
End Sub
1
ответ дан Basho 17 August 2018 в 13:16
поделиться

Кажется, вам требуется максимальное число заполненных строк из любого столбца, упомянутого в качестве основных критериев в вашей формуле (ей).

Кроме того, если lr равно 99, то "F2:I2" & lr становится F2:I299.

Одноразовые вары редко бывают целесообразными или эффективными, если они не улучшают четкость кода. arr не сделал ничего из этого, но я бы сказал, что ty оправдано последним.

Sub test1()

    Dim lr As Long, ty  AS VARIANT

    with workSheets("Detail")

        lr = application.max(.cells(.rows.count, "H").end(xlup).row, _
                             .cells(.rows.count, "P").end(xlup).row, _
                             .cells(.rows.count, "AR").end(xlup).row, _
                             .cells(.rows.count, "BR").end(xlup).row)

        .Range("F:I").NumberFormat = "General"

        .Range("F1:I1").Value = Array("MFR", "CUSTLINE#", "PRICE (DYP)", "DELIVERY")

        ty = Array("=IF(H2=""NB"", text(,), AY2)", "=A2", "=IF(P2= text(,), ""NB"", P2)", _
                   "=IF(BR2>(D2+AM2), ""STOCK"", " & _
                   "IF(AR2=""0 Weeks"", text(,), SUBSTITUTE(AR2, "" Weeks"", "" WKS"")))")

         .Range("F2:I" & lr).Formula = ty

    end with

End Sub
1
ответ дан Jeeped 17 August 2018 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: