/ / Come posso limitare la lunghezza della selezione di una riga quando utilizzo Excel.Range () - vb.net, excel

Come posso limitare la lunghezza di una selezione di riga quando si utilizza Excel.Range () - vb.net, excel

Sto usando VB.codice di rete per manipolare documenti Excel. Sto cercando di afferrare un intervallo di celle contenute in una singola riga specifica. Non conosco la cella finale specifica, ho solo bisogno di tutte le celle che contengono valori in quella riga.

Ecco un esempio di base di ciò che ho fatto fino a questo punto:

Dim rngRange come Excel.Range

Dim wksXLWorksheet As Excel.Worksheet

rngRange = wksXLWorksheet.Range ("A1"). InteroRow

Conosco quella riga contenente l'intervallo "A1" (cheè una singola cella) è la riga che desidero e quindi utilizzo la proprietà InteroRow per restituire l'intera riga. Restituisce tutte le celle, comprese quelle inutilizzate, quindi oltre 16k in celle, la maggior parte vuote.

Come può scegliere un intervallo con solo le celle utilizzate? Non voglio usare UsedRange perché questo prende tutto, voglio solo una riga e solo fino a dove le celle non contengono più dati.

Inoltre, se seleziono un intervallo limitato come questo, avrà un impatto maggiore o minore sulle risorse? Pensavo che avrebbe avuto un impatto minore selezionando la gamma piccola, ma potrei sbagliarmi.

risposte:

1 per risposta № 1

Usa la proprietà .End, ad es. Range ( "A1"). Fine (xlToRight).

http://msdn.microsoft.com/en-us/library/office/ff839539.aspx


0 per risposta № 2

L'oggetto Excel.Application ha un metodo Intersect e il foglio di lavoro ha una proprietà UsedRange.

Dim rngRange as Excel.Range
Dim wksXLWorksheet As Excel.Worksheet
Dim xlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application()

rngRange = Excel.Intersect(wksXLWorksheet.Range("1:1"), wksXLWorksheet.UsedRange)

In alternativa, definire l'intervallo con i punti iniziale e finale mentre si qualificano le celle che compongono l'intervallo.

Dim rngRange as Excel.Range
Dim wksXLWorksheet As Excel.Worksheet

rngRange = wksXLWorksheet.Range(wksXLWorksheet.Range("A1"), wksXLWorksheet.Range("XFD1").End(xlToLeft))