在visual basic中搜索已填充的单元格

时间:2016-07-22 16:03:55

标签: excel-vba vba excel

我是使用visual basic的初学者,我遇到了一个小问题。我想要做的是获取Excel电子表格并搜索特定列以查找名称,然后抓取该行中的所有内容以将其转移到另一个工作表。我已经把所有东西都运行了,除了我因为一个我不理解的原因而遇到无限循环。

Ext.define('CustomComponentViewModel', {
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.customcomponent',
    formulas: {
        myStore: function(get) {
            return Ext.getStore(get('store'));
        }
    },
    stores: {
        myStore: {
            fields: [
                {
                    name: 'id'
                },
                {
                    name: 'name'
                },
                {
                    name: 'description'
                }
            ]
        }},

});    


Ext.define('CustomComponent', {
    extend: 'Ext.container.Container',
    xtype: 'customcomponent',
    viewModel: {
        type: 'customcomponent'
    },
    config: {
        bind: {
            store: '{myStore}'
        }
    }
});

我遇到的具体问题是溢出,因为ct是一个int并且最大化了。这告诉我手上有无穷无尽的循环。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

每张纸的迭代次数超过100万次,这需要一段时间。找到D列中的最后一个单元格,只遍历这些行

另外你不需要ct。而是在其位置使用rng.row。

然后将整个值赋值合并为一行。

For i = 1 To ThisWorkbook.Sheets.Count
'set up a temp page to work with the current page
Set tem = ThisWorkbook.Sheets(i)
'increment through all the rows that have data in them

    For Each rng In tem.Range("D1", tem.Cells(tem.Rows.Count, 4).End(xlUp))
    'if the data matches what was searched for, copy it into another worksheet
        If rng.Value = SForm.Text Then
            sr.Range(sr.Cells(spot, 1), sr.Cells(spot, 12)).Value = tem.Range(tem.Cells(rng.Row, 1), tem.Cells(rng.Row, 12)).Value
            'increment the placeholder for the new sheet
            spot = spot + 1
        End If
    Next rng
Next i

为了更快地将整个范围放入数组并输出到另一个数组中以最小化工作表和vba之间的交互。