Как очистить этот код, чтобы сделать его более простым и адаптируемым? - PullRequest
0 голосов
/ 29 ноября 2018

Нужен совет о том, как очистить этот код, чтобы его было легче читать, и он стал более адаптируемым, если мне нужно увеличить количество строк.В частности, как сообщить коду, какие ячейки выбрать и какие значения найти в каждой ячейке.

qWordCount = WorksheetFunction.Sum(Worksheets("Words").Range("B:B"))

Cells(2, 5) = "Hyphens"
Cells(2, 6) = tHyphenCount
Cells(2, 7) = Round(qWordCount / tHyphenCount, 2)

Cells(3, 5) = "Brackets"
Cells(3, 6) = rBracketCount / 2
Cells(3, 7) = Round(qWordCount / (rBracketCount / 2), 2)

Cells(4, 5) = "Quotation Marks"
Cells(4, 6) = vQuotationMarkCount
Cells(4, 7) = Round(qWordCount / vQuotationMarkCount, 2)

Cells(5, 5) = "Full Stops"
Cells(5, 6) = zFullStopCount
Cells(5, 7) = Round(qWordCount / zFullStopCount, 2)

Cells(6, 5) = "Question Marks"
Cells(6, 6) = yQuestionMarkCount
Cells(6, 7) = Round(qWordCount / yQuestionMarkCount, 2)

Cells(7, 5) = "Colons"
Cells(7, 6) = xColonCount
Cells(7, 7) = Round(qWordCount / xColonCount, 2)

Cells(8, 5) = "Commas"
Cells(8, 6) = wCommaCount
Cells(8, 7) = Round(qWordCount / wCommaCount, 2)

Cells(9, 5) = "Semicolons"
Cells(9, 6) = uSemiColonCount
Cells(9, 7) = Round(qWordCount / uSemiColonCount, 2)

Cells(10, 5) = "Exclamation Marks"
Cells(10, 6) = sExclamationMarkCount
Cells(10, 7) = Round(qWordCount / sExclamationMarkCount, 2)

Cells(11, 5) = "Word Count"
Cells(11, 6) = qWordCount

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете создать для него общую процедуру.Обратите внимание, что код имеет дело со специальным случаем Скобки , когда само rBracketCount делится на два.Чтобы применить это деление, передайте True для параметра is_divide.По умолчанию это False.

Sub Dump(topLeftCell As Range, sCaption$, wordcnt#, cnt#, Optional is_divide = False)
    topLeftCell.Resize(, 3) = Array(sCaption, cnt, Round(wordcnt / (cnt / IIf(is_divide, 2, 1)), 2))
End Sub

Sub Test()
    Call Dump([A1], "Commas", 100, 50)
End Sub
0 голосов
/ 29 ноября 2018

Мне нравится ваш код таким, какой он есть, но вы также можете сделать что-то вроде этого

public sub embed(lRow as long,lCol as long,strFirst as string,strMacro as string,dNum as double, dDen as double)

    cells(lRow,lCol) = strFirst
    cells(lRow,lCol+1) = application.run(strMacro)
    cells(lRow,lCol+2) = Round(dNum / dDen, 2)

end sub

public sub main()

    embed 2,5,"Hyphens","tHyphenCount",qWordCount,tHyphenCount
    'Replace the remainder of the blocks of code with embed calls, aside from the last 2, which doesn't fit this model

end sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...