| | Post: 19 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
25/12/2019 19:54 | |
Salve mi chiamo Fabrizio avrei la neccessita' di adattare l'altezza delle righe dalla 4 alla 10000.
Pero' ci sono diverse righe nascoste e vorrei che la formula entrasse in funzione solo per le righe Visibili.
con questa formula mi da variabile non definita.
Qualcuno puo' aiutarmi???
grazie
Private Sub Worksheet_SelectionChange(ByVal Target As Range
For x = 4 To 10000
If Rows(x).Hidden = False Then
Cells(x, 1).Select.EntireRow.AutoFit
End If
End With
End Sub |
|
| | Post: 4.296 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
25/12/2019 20:51 | |
L’errore non c’entra nulla con il problema che sottoponi.
Devi solo dichiarare con Dim la variabile x del ciclo For.
Cerca un po’ su Internet come si dichiarano le variabili in VBA.
Alfredo |
| | Post: 19 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
25/12/2019 21:13 | |
Ciao Alfredo, è poprio perchè ho gia' cercato in internet e non ne sono venuto a capo !
Purtroppo per me quello che mi chiedi è acora arabo...
mi daresti una dritta?
grazie |
| | Post: 4.297 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
25/12/2019 22:09 | |
Io non so tu cosa abbia cercato ma cerca con Google "Excel VBA dichiarare variabili" e ti si aprirà un mondo.
https://www.google.com/search?q=excel+vba+dichiarazione+variabili&rlz=1C1DIMC_enIT814IT815&oq=Excel+vba+dichia&aqs=chrome.1.69i57j0l3.10425j0j8&sourceid=chrome&ie=UTF-8
Bada che non sono "cattivo" a non dirtelo ma se ci arrivi da solo non lo dimentichi più; se te lo dico io il giorno dopo lo avrai dimenticato e non avrai imparato niente.
Se fai così vedrai che l'"arabo" a poco a poco ti diventerà comprensibile. [Modificato da alfrimpa 25/12/2019 22:11]
Alfredo |
| | Post: 20 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
25/12/2019 22:38 | |
Ciao Alfredo ho dato un'occhiata ma come ti dicevo purtroppo non ho il tempo per iniziare a studiare un "mondo del vba" grazie cmq... |
| | Post: 4.298 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
25/12/2019 23:06 | |
Per dichiarare una variabille non occorre studiare il VBA basta una banale ricerca con Google.
Se l’avessi fatta in tre secondi e mezzo avresti scoperto che l'istruzione che ti occorre è
e non vuoi fare neanche questo?
Se vuoi usare il VBA e ti si presentano problemi un giorno e l’altro pure come li risolvi?
Chiedendo sempre sui forum?
Alfredo |
| | Post: 21 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
26/12/2019 12:14 | |
ciao ho provato a integrare questo codice ,
ho notato che a iniziato a fare il ciclo, pero mi ha scoperto tutte le righe nascoste , mantre le righe nascoste devono rimanere nascoste.
Avete suggerimenti.??
grazie
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As Integer
For x = 4 To 10000
If Rows(x).Hidden = false Then
Cells(x, 1).Select
Cells.EntireRow.AutoFit
End If
Next x
End Sub |
| | Post: 767 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | OFFLINE |
|
26/12/2019 18:32 | |
Ciao
@alfrimpa (ciao Alfredo) ha ragione quando dice che se non conosci VBA è difficile darti suggerimenti.
Ora, poichè non voglio neppure prendere in considerazione che alla tua età "non si ha tempo" per imparare, ti suggerisco di analizzare passo passo la macro che hai pubblicato.
Facciamolo insieme.
questa è la riga iniziale che dice ad Excel di "stare attento quando si seleziona una cella"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
questa è la riga delle dichiarazioni delle variabili
Dim x As Integer
questa ti fa iniziare un ciclo dalla riga 4 alla riga 10000
For x = 4 To 10000
questa dice ad Excel: attento, se la riga x NON è nascosta allora
If Rows(x).Hidden = false Then
questa riga dice ad Excell: selezionala (ma mi chiedo che bisogno hai di selezionarla e non tieni in conto che si innesca nuovamente la macro al cambiamento di selezione. Entri in un ciclo infinito.
Io ti consiglio di toglierla.
Cells(x, 1).Select
e adesso veniamo all'errore. Con questa riga cosa stai dicendo ad Excel?
Cells.EntireRow.AutoFit
Tieni presente che Cells per Excel vuol dire l'intero foglio, tutte le celle presenti (nascoste o no). Quindi Excel esegue e ti porta tutte le celle all'altezza di default.
Invece, visto che stai analizzando di Rows (righe) continua con questa riga
Rows(x).EntireRow.AutoFit
le successive righe vanno bene
End If
Next x
End Sub
Prova e fai sapere.
Ciao,
Mario [Modificato da Marius44 26/12/2019 18:32] |
|
26/12/2019 18:43 | |
E poi farlo con un SelectionChange....,
Significa ammazzare la CPU in due giorni (meglio un bottone)
Edit, inoltre cosa intendi per allargare le righe?
Che vedrai il testo su più righe....
NB Non funziona se le celle non sono formattate con "testo a capo", oppure intendevi allargare la colonne per visualizzare il testo [Modificato da ABCDEF@Excel 26/12/2019 19:00] |
| | Post: 1.865 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
26/12/2019 21:51 | |
ciao
visto che allargare le colonne di solo
le righe visibili è impossibile
immagino tu voglia allargare le righe
dove hai del testo a capo
crea un pulsante e collegalo a
Private Sub CommandButton1_Click()
ir = 4
For ir = 4 To 10000
A = Cells(ir, 1).Value
B = Len(Trim(A))
If B > 10 And Cells(ir, 1).EntireRow.Hidden = False Then
Cells(ir, 1).WrapText = True
Cells(ir, 1).EntireRow.AutoFit
End If
Next
ir = ir + 1
End Sub
ti manda a capo solo le celle visibili
e con almeno 11 carattere.
se vari If B > 10
in If B > 40
la cella deve avere almeno 41 caratteri
eccetera
è balorda come macro ma funziona
e ti da la possibilità di scegliere che righe aumentare
NB
Cells(ir, 1).EntireRow.AutoFit
è in più non servirebbe |
|
27/12/2019 13:08 | |
Domanda: Le righe nascoste le hai "nascoste" Tu fisicamente, oppure sono "nascoste" da un filtro?
Se fossero "nascoste" da un filtro, potresti usare il Worksheet_Change
La CPU avrà uno enorme sgravio, in caso contrario dovrai fare il ciclo For |
| | Post: 4.199 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
27/12/2019 13:31 | |
fabrizio.ExcelForum, 25/12/2019 22.38:
Ciao Alfredo ho dato un'occhiata ma come ti dicevo purtroppo non ho il tempo per iniziare a studiare un "mondo del vba" grazie cmq...
siete troppo buoni, va bene che siamo sotto Natale, ma uno che dice queste cose e frequenta da anni i vari forum di excel, non si merita di essere aiutato
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 4.299 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
27/12/2019 13:48 | |
patel45, 27/12/2019 13.31:
siete troppo buoni, va bene che siamo sotto Natale, ma uno che dice queste cose e frequenta da anni i vari forum di excel, non si merita di essere aiutato
Sono completamente d'accordo.
Alfredo |
| | Post: 23 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
27/12/2019 18:37 | |
Salve ,scusate ma anche se sono datato dal /2017, io non ho mai frequentato i forum se non 3 volte, e purtroppo sono impegnato nel mio lavoro e faccio fatica proprio come tempistica a dedicare tempo ad altro..
mi piacerebbe.. ma non riesco e allora mi rivolgo qui da voi quando mi incaglio sperando di trovare qualche dritta...
ho provato a guardare il consiglio vago di "Patel" ma ci vuole tanto tempo per capire il vba , magari con le formule me la cavo meglio.
Poi ho risolto con l'aiuto del registratore con questo codice...
Sub Macro500()
'
' Macro500 Macro
'
Application.ScreenUpdating = False
Rows("4:4").Select
Selection.Rows("1:10000").SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.AutoFit
Range("A3").Select
Application.ScreenUpdating = True
End Sub
cmq provero' i vari aiuti con i codici da voi forniti..
poi faro' sapere.
grazie mille a quelli che mi hanno aiutato... |
|
|