Arrays - Part Four - SpecialCells
The most urgent question for the target area is how we determine the visible cells, since we assume that the data can be filtered in any way.
Luckily, Excel has the SpecialCells function and most programmers call it directly. However, this feature comes with a few issues and may not work as expected. This is the case, for example, if we only check a single cell.
Code:
<head><style type="text/css">span {color: #000000;}.sc0 {}.sc2 {color: #008000;}.sc4 {color: #0000FF;}.sc12 {}.sc16 {color: #800000;}.sc24 {}</style></head><body>
<div style="float: left; white-space: pre; line-height: 1;"><span class="sc4">Sub</span><span class="sc24"> </span><span class="sc0">Example_SpecialCells_DontWork</span><span class="sc12">()</span><span class="sc24">
</span><span class="sc2">'Create the scenario
</span><span class="sc24"> </span><span class="sc0">ScenarioA</span><span class="sc24">
</span><span class="sc2">'Clear some cells
</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"B2:C2,D1:D2,5:10"</span><span class="sc12">).</span><span class="sc0">Clear</span><span class="sc24">
</span><span class="sc2">'B2 is empty, so this cell should be selected only!
</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"B2"</span><span class="sc12">).</span><span class="sc0">SpecialCells</span><span class="sc12">(</span><span class="sc0">xlCellTypeBlanks</span><span class="sc12">).</span><span class="sc4">Select</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">Sub</span></div></body>
To be 100% sure, we need to encapsulate the function in another function and catch this error. If you found this article by chance, the SpecialCells function is included in the files in the modLowLevel module, the download link is at the top of the article.
Code:
<head><style type="text/css">span {color: #000000;}.sc0 {}.sc2 {color: #008000;}.sc4 {color: #0000FF;}.sc12 {}.sc16 {color: #800000;}.sc24 {}</style></head><body>
<div style="float: left; white-space: pre; line-height: 1;"><span class="sc4">Sub</span><span class="sc24"> </span><span class="sc0">Example_SpecialCells_Works</span><span class="sc12">()</span><span class="sc24">
</span><span class="sc2">'Create the scenario
</span><span class="sc24"> </span><span class="sc0">ScenarioA</span><span class="sc24">
</span><span class="sc2">'Clear some cells
</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"B2:C2,D1:D2,5:10"</span><span class="sc12">).</span><span class="sc0">Clear</span><span class="sc24">
</span><span class="sc2">'B2 is empty, so this cell should be selected only!
</span><span class="sc24"> </span><span class="sc0">SpecialCells</span><span class="sc12">(</span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"B2"</span><span class="sc12">),</span><span class="sc24"> </span><span class="sc0">xlCellTypeBlanks</span><span class="sc12">).</span><span class="sc4">Select</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">Sub</span></div></body>
And with that we can also deal with another problem, it is possible that no cells are visible at all and in this case our function returns Nothing.
Code:
<head><style type="text/css">span {color: #000000;}.sc0 {}.sc2 {color: #008000;}.sc3 {color: #FF0000;}.sc4 {color: #0000FF;}.sc12 {}.sc16 {color: #800000;}.sc24 {}</style></head><body>
<div style="float: left; white-space: pre; line-height: 1;"><span class="sc4">Sub</span><span class="sc24"> </span><span class="sc0">Example_SpecialCells_RTE</span><span class="sc12">()</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc24">
</span><span class="sc2">'Create the scenario
</span><span class="sc24"> </span><span class="sc0">ScenarioA</span><span class="sc24">
</span><span class="sc2">'Select some cells
</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"B3:E5"</span><span class="sc12">).</span><span class="sc4">Select</span><span class="sc24">
</span><span class="sc2">'Filter the cells
</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"A1"</span><span class="sc12">).</span><span class="sc0">AutoFilter</span><span class="sc24">
</span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"A1"</span><span class="sc12">).</span><span class="sc0">AutoFilter</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc16">"A8"</span><span class="sc24">
</span><span class="sc2">'In case of all seleczed cells are filtered out, no cells are visible!
</span><span class="sc24"> </span><span class="sc2">'This is the save way to detect this
</span><span class="sc24"> </span><span class="sc4">Set</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">SpecialCells</span><span class="sc12">(</span><span class="sc0">Selection</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">xlCellTypeVisible</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">If</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">Is</span><span class="sc24"> </span><span class="sc4">Nothing</span><span class="sc24"> </span><span class="sc4">Then</span><span class="sc24">
</span><span class="sc0">MsgBox</span><span class="sc24"> </span><span class="sc16">"No visible cells"</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">If</span><span class="sc24">
</span><span class="sc2">'This line results in an RTE 1004
</span><span class="sc24"> </span><span class="sc4">Set</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">Selection</span><span class="sc12">.</span><span class="sc0">SpecialCells</span><span class="sc12">(</span><span class="sc0">xlCellTypeVisible</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc0">Sub</span></div></body>
With this we have almost all the tools together, only one thing is missing and to understand why we need it we have to look at a new scenario.
Arrays - Part Five - The Scenario
Here is the code for the new scenario.
Code:
<head><style type="text/css">span {color: #000000;}.sc0 {}.sc2 {color: #008000;}.sc3 {color: #FF0000;}.sc4 {color: #0000FF;}.sc12 {}.sc16 {color: #800000;}.sc24 {}</style></head><body>
<div style="float: left; white-space: pre; line-height: 1;"><span class="sc4">Sub</span><span class="sc24"> </span><span class="sc0">ScenarioB</span><span class="sc12">()</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc24">
</span><span class="sc2">'Remove the AutoFilter if any
</span><span class="sc24"> </span><span class="sc4">If</span><span class="sc24"> </span><span class="sc0">ActiveSheet</span><span class="sc12">.</span><span class="sc0">AutoFilterMode</span><span class="sc24"> </span><span class="sc4">Then</span><span class="sc24"> </span><span class="sc0">Cells</span><span class="sc12">.</span><span class="sc0">AutoFilter</span><span class="sc24">
</span><span class="sc2">'Clear all cells
</span><span class="sc24"> </span><span class="sc0">Cells</span><span class="sc12">.</span><span class="sc0">Clear</span><span class="sc24">
</span><span class="sc2">'Refer to some cells
</span><span class="sc24"> </span><span class="sc4">Set</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">(</span><span class="sc16">"B2:F12"</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">With</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">Offset</span><span class="sc12">(</span><span class="sc3">1</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc2">'Write a formula into to get the address of the cell
</span><span class="sc24"> </span><span class="sc12">.</span><span class="sc0">Formula</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc16">"=ADDRESS(ROW(),COLUMN(),4)"</span><span class="sc24">
</span><span class="sc2">'Write 1 or 0 into the fist column
</span><span class="sc24"> </span><span class="sc12">.</span><span class="sc0">Columns</span><span class="sc12">(</span><span class="sc3">1</span><span class="sc12">).</span><span class="sc0">Formula</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc16">"=MOD(ROW(),2)"</span><span class="sc24">
</span><span class="sc2">'Convert the formulas to values (using a 2D-array "on the fly")
</span><span class="sc24"> </span><span class="sc12">.</span><span class="sc0">Value</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc12">.</span><span class="sc0">Value</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">With</span><span class="sc24">
</span><span class="sc2">'Add Headers
</span><span class="sc24"> </span><span class="sc4">With</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">Rows</span><span class="sc12">(</span><span class="sc3">1</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc12">.</span><span class="sc0">Formula</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc16">"=LEFT(ADDRESS(ROW(),COLUMN(P1),4),1)"</span><span class="sc24">
</span><span class="sc12">.</span><span class="sc0">Value</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc12">.</span><span class="sc0">Value</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">With</span><span class="sc24">
</span><span class="sc2">'Add an AutoFilter
</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">AutoFilter</span><span class="sc24">
</span><span class="sc2">'Filter the first column
</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">AutoFilter</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24">
</span><span class="sc2">'Select some cells in there
</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">Offset</span><span class="sc12">(</span><span class="sc3">2</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">2</span><span class="sc12">).</span><span class="sc0">Resize</span><span class="sc12">(</span><span class="sc3">6</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">2</span><span class="sc12">).</span><span class="sc4">Select</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">Sub</span></div></body>
And here is how it looks like:
https://i.postimg.cc/PJsHPC4r/Paste-...Scenario-B.png
Arrays - Part Six - The Final
We have a filtered area and in this area a range is selected. Let's take a look at what happens when we just write an array in there.
Code:
<head><style type="text/css">span {color: #000000;}.sc0 {}.sc2 {color: #008000;}.sc3 {color: #FF0000;}.sc4 {color: #0000FF;}.sc12 {}.sc16 {color: #800000;}.sc24 {}</style></head><body>
<div style="float: left; white-space: pre; line-height: 1;"><span class="sc4">Sub</span><span class="sc24"> </span><span class="sc0">MultipleDestinationCells_DontWork</span><span class="sc12">()</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc4">Long</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc4">Long</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">Data</span><span class="sc24">
</span><span class="sc2">'Create the scenario
</span><span class="sc24"> </span><span class="sc0">ScenarioB</span><span class="sc24">
</span><span class="sc2">'Get the visible selected cells
</span><span class="sc24"> </span><span class="sc4">Set</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">SpecialCells</span><span class="sc12">(</span><span class="sc0">Selection</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">xlCellTypeVisible</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc2">'Do we have any?
</span><span class="sc24"> </span><span class="sc4">If</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">Is</span><span class="sc24"> </span><span class="sc4">Nothing</span><span class="sc24"> </span><span class="sc4">Then</span><span class="sc24">
</span><span class="sc0">MsgBox</span><span class="sc24"> </span><span class="sc16">"No visible cells selected"</span><span class="sc24">
</span><span class="sc4">Exit</span><span class="sc24"> </span><span class="sc4">Sub</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">If</span><span class="sc24">
</span><span class="sc2">'Get the number of rows and columns
</span><span class="sc24"> </span><span class="sc0">RangeCount</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">MaxColumns</span><span class="sc12">:=</span><span class="sc0">c</span><span class="sc24">
</span><span class="sc2">'Create an array of that size and fill it:
</span><span class="sc24"> </span><span class="sc2">'11 12
</span><span class="sc24"> </span><span class="sc2">'21 22
</span><span class="sc24"> </span><span class="sc2">'31 32
</span><span class="sc24"> </span><span class="sc4">ReDim</span><span class="sc24"> </span><span class="sc0">Data</span><span class="sc12">(</span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">For</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">UBound</span><span class="sc12">(</span><span class="sc0">Data</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">2</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">For</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">UBound</span><span class="sc12">(</span><span class="sc0">Data</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc0">Data</span><span class="sc12">(</span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc12">)</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">*</span><span class="sc24"> </span><span class="sc3">10</span><span class="sc24"> </span><span class="sc12">+</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc24">
</span><span class="sc4">Next</span><span class="sc24">
</span><span class="sc4">Next</span><span class="sc24">
</span><span class="sc2">'Write it into
</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">Value</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">Data</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">Sub</span></div></body>
Surprisingly, we don't get an error message and the filtered cells are not overwritten, but the values in the cells are completely wrong.
https://i.postimg.cc/3xHkPRQh/Paste-...-Dont-Work.png
It would still be understandable that we always get an 11 in the first column and always a 12 in the second. However, why a 31 appears in E7 is incomprehensible even to me. It obviously doesn't work that way at all.
We need to traverse the visible area, but not cell by cell. Multiple ranges in a Range object are automatically divided into Areas, and we can write a suitable array into each Area. So, we need a routine that copies the appropriate portion from our data array. Then we just need to execute a counter to get the next portion for the next range.
Code:
<head><style type="text/css">span {color: #000000;}.sc0 {}.sc2 {color: #008000;}.sc3 {color: #FF0000;}.sc4 {color: #0000FF;}.sc12 {}.sc16 {color: #800000;}.sc24 {}</style></head><body>
<div style="float: left; white-space: pre; line-height: 1;"><span class="sc4">Sub</span><span class="sc24"> </span><span class="sc0">MultipleDestinationCells_Works</span><span class="sc12">()</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">Area</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc0">Range</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc4">Long</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc24"> </span><span class="sc4">As</span><span class="sc24"> </span><span class="sc4">Long</span><span class="sc24">
</span><span class="sc4">Dim</span><span class="sc24"> </span><span class="sc0">Data</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">Part</span><span class="sc24">
</span><span class="sc2">'Create the scenario
</span><span class="sc24"> </span><span class="sc0">ScenarioB</span><span class="sc24">
</span><span class="sc2">'Get the visible selected cells
</span><span class="sc24"> </span><span class="sc4">Set</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">SpecialCells</span><span class="sc12">(</span><span class="sc0">Selection</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">xlCellTypeVisible</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc2">'Do we have any?
</span><span class="sc24"> </span><span class="sc4">If</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc24"> </span><span class="sc4">Is</span><span class="sc24"> </span><span class="sc4">Nothing</span><span class="sc24"> </span><span class="sc4">Then</span><span class="sc24">
</span><span class="sc0">MsgBox</span><span class="sc24"> </span><span class="sc16">"No visible cells selected"</span><span class="sc24">
</span><span class="sc4">Exit</span><span class="sc24"> </span><span class="sc4">Sub</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc4">If</span><span class="sc24">
</span><span class="sc2">'Get the number of rows and columns
</span><span class="sc24"> </span><span class="sc0">RangeCount</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">MaxColumns</span><span class="sc12">:=</span><span class="sc0">c</span><span class="sc24">
</span><span class="sc2">'Create an array of that size
</span><span class="sc24"> </span><span class="sc4">ReDim</span><span class="sc24"> </span><span class="sc0">Data</span><span class="sc12">(</span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">For</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">UBound</span><span class="sc12">(</span><span class="sc0">Data</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">2</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc4">For</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24"> </span><span class="sc4">To</span><span class="sc24"> </span><span class="sc0">UBound</span><span class="sc12">(</span><span class="sc0">Data</span><span class="sc12">)</span><span class="sc24">
</span><span class="sc0">Data</span><span class="sc12">(</span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc12">)</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">*</span><span class="sc24"> </span><span class="sc3">10</span><span class="sc24"> </span><span class="sc12">+</span><span class="sc24"> </span><span class="sc0">c</span><span class="sc24">
</span><span class="sc4">Next</span><span class="sc24">
</span><span class="sc4">Next</span><span class="sc24">
</span><span class="sc2">'We start at row 1 always!
</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc24">
</span><span class="sc4">For</span><span class="sc24"> </span><span class="sc4">Each</span><span class="sc24"> </span><span class="sc0">Area</span><span class="sc24"> </span><span class="sc4">In</span><span class="sc24"> </span><span class="sc0">Dest</span><span class="sc12">.</span><span class="sc0">Areas</span><span class="sc24">
</span><span class="sc2">'Copy the part of the Data array that fit's into the Area
</span><span class="sc24"> </span><span class="sc0">CopyPart</span><span class="sc24"> </span><span class="sc0">Data</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">Part</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc3">1</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">Area</span><span class="sc12">.</span><span class="sc0">Rows</span><span class="sc12">.</span><span class="sc0">Count</span><span class="sc12">,</span><span class="sc24"> </span><span class="sc0">Area</span><span class="sc12">.</span><span class="sc0">Columns</span><span class="sc12">.</span><span class="sc0">Count</span><span class="sc24">
</span><span class="sc2">'Write into
</span><span class="sc24"> </span><span class="sc0">Area</span><span class="sc12">.</span><span class="sc0">Value</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">Part</span><span class="sc24">
</span><span class="sc2">'Increment the row counter
</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">=</span><span class="sc24"> </span><span class="sc0">r</span><span class="sc24"> </span><span class="sc12">+</span><span class="sc24"> </span><span class="sc0">Area</span><span class="sc12">.</span><span class="sc0">Rows</span><span class="sc12">.</span><span class="sc0">Count</span><span class="sc24">
</span><span class="sc4">Next</span><span class="sc24">
</span><span class="sc4">End</span><span class="sc24"> </span><span class="sc0">Sub</span></div></body>
And that's it.
https://i.postimg.cc/L5LPGQv4/Paste-...ells-Works.png
Finally, there is just one more detail to note: If you copy data from an HTML source, you may get several arrays. In order to keep the arrays as small as possible, these arrays are not combined into one, but processed individually one after the other. If you have any questions about the tool or the explanations, please post them here. I'll do my best to explain them to you.
Best regards, Andreas.