Condividi tramite

Vba: limiti selezione celle

Anonimo
2015-07-03T09:17:26+00:00

Ciao a tutti

Premetto che ho risolto la questione alimentando una matrice e stampandola poi sul foglio di destinazione (con tempi veramente rapidi).

Sottopongo comunque l'argomento:

  • ho necessità di "eliminare" (non cancellare)  tutte le celle vuote di una tabella spostando da destra a sinistra:

range(xx).Delete Shift:=xlToLeft per intenderci.

In un primo momento avevo pensato di fare:

...

Set mrng= Range("A1:AZ250")

ToCanc= ""

For Each cel In mrng.Cells

    If cel = "" Then ToCanc = ToCanc & cel.Address(False, False) & ","

Next

ToCanc = Mid(ToCanc, 1, Len(ToCanc) - 1)

Range(ToCanc).Select

Selection.Delete Shift:=xlToLeft

che funziona fin quando le celle vuote non sono molte (non conosco il limite e mi piacerebbe saperlo), altrimenti ottengo la segnalazione:

'metodo range dell'oggetto global non riuscito'

Se ho la pazienza di selezionare manualmente lo stesso numero di celle, il problema non si pone.

Ciò premesso, ripeto che ho risolto egregiamente come riportato all'inizio, ma la curiosità è tanta.

Grazie per l'attenzione

domenico

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2015-07-03T10:37:31+00:00

    Ciao Domenico,

    Prova qualcosa del genere:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range, mRng As Range

        Set WB = ThisWorkbook                          

        Set SH = WB.Sheets("Foglio1")                   '<<=== Modifica

        Set mRng = Range("A1:AZ250")

        On Error Resume Next

        Set Rng = mRng.SpecialCells(xlCellTypeBlanks)

        On Error GoTo 0

        If Not Rng Is Nothing Then

            Rng.Delete Shift:=xlToLeft

        End If

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-07-03T15:29:35+00:00

    Ciao Domenico,

    Grazie a te del cortese riscontro,

    Alla prossima!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-07-03T14:26:26+00:00

    Che dire Norman, è un lampo!!

    grazie ancora

    cari saluti

    domenico

    La risposta è stata utile?

    0 commenti Nessun commento