как использовать 'ReDim Preserve' в Excel VBA, когда я не знаю значение верхней границы

Кросс-браузерное решение для проверки значений CSS без манипуляции с DOM:

function getStyleRuleValue(style, selector) {
    for (var i = 0; i < document.styleSheets.length; i++) {
        var mysheet = document.styleSheets[i];
        var myrules = mysheet.cssRules ? mysheet.cssRules : mysheet.rules;
        for (var j = 0; j < myrules.length; j++) {
            if (myrules[j].selectorText && myrules[j].selectorText.toLowerCase() === selector) {
                return myrules[j].style[style];
            }
        }

    }
};

Использование:

getStyleRuleValue('backgroundColor', '.chart-color')

дезинфицированная версия (принудительно вводит ввод в строчный регистр и позволяет использовать case без ведущего ".")

function getStyleRuleValue(style, selector) {
var selector_compare=selector.toLowerCase();
var selector_compare2= selector_compare.substr(0,1)==='.' ?  selector_compare.substr(1) : '.'+selector_compare;

for (var i = 0; i < document.styleSheets.length; i++) {
    var mysheet = document.styleSheets[i];
    var myrules = mysheet.cssRules ? mysheet.cssRules : mysheet.rules;
    for (var j = 0; j < myrules.length; j++) {
        if (myrules[j].selectorText) {
            var check = myrules[j].selectorText.toLowerCase();
            switch (check) {
                case selector_compare  :
                case selector_compare2 : return myrules[j].style[style];
            }
        }
    }

}

}

1
задан Pᴇʜ 17 January 2019 в 12:02
поделиться

2 ответа

С помощью счетчика:

Dim myArr As Variant
Dim counter as Integer

Do While (some condition)
    ReDim Preserve myArr(counter)
    myArr(counter)=Trim(variable_name)
Loop

Чтобы сделать это немного дальше, чем псевдо-код

Dim myArr as Variant
Dim counter as Integer
Dim x as Integer
x = 2

Do While x < 10
    ReDim Preserve myArr(counter)
    myArr(counter) = x
    debug.print Ubound(myArr)
    debug.print myArr(counter)
    x = x * 2 
Loop
0
ответ дан Scott Holtzman 17 January 2019 в 12:02
поделиться

Вот небольшой фрагмент кода, который должен помочь вам понять:

Option Explicit
Sub ReDimTest()
    Dim counter As Long
    counter = 0
    Dim arr() As String

    'read first element from file
    Dim firstItem As String: firstItem = "1"
    'increment counter
    counter = counter + 1
    ReDim Preserve arr(counter)
    arr(counter) = firstItem
    'read second element from file
    Dim secondItem As String: secondItem = "2"
    'increment counter
    counter = counter + 1
    ReDim Preserve arr(counter)
    arr(counter) = secondItem
End Sub
0
ответ дан Michał Turczyn 17 January 2019 в 12:02
поделиться
Другие вопросы по тегам:

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