Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-07-2009, 22:52   #1
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
[vba word] saltare il primo paragrafo "pieno"

Ciao a tutti. Non essendo per niente pratico del vba relativo a word mi trovo in difficoltà. Spiego rapidamente la mia necessità. Ho un documento che contiene una serie di paragrafi, comprese ovviamente delle righe vuote che potrebbero anche trovarsi all'inizio del documento. Io devo ciclare tutti i paragrafi "pieni" ad esclusione del primo.

Se non ci fossero paragrafi vuoti farei così

Codice:
Sub pieni()
With ActiveDocument
For i = 2 To .Paragraphs.Count
   testo = .Paragraphs(i)
   MsgBox testo
Next i
End With
End Sub
e potrei agevolmente saltare il primo.
Purtroppo nel mio caso sono arrivato a scrivere queste poche righe (correggetemi se esiste un modo diverso per escludere i paragrafi vuoti), ma in questo contesto non so come saltare il primo paragrafo che in pratica è il titolo del documento e non mi occorre. Grazie per l'attenzione.

Codice:
Sub cicla()
For Each p In ActiveDocument.Paragraphs
    If p.Range.Characters.Count > 1 Then
        MsgBox p
    End If
Next p
End Sub
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2009, 23:43   #2
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Ho risolto in questo modo.

Codice:
Sub cicla()
Dim p As Paragraph
Dim i As Integer
For Each p In ActiveDocument.Paragraphs
    If p.Range.Characters.Count > 1 Then
        If i = 0 Then
            ActiveDocument.Range.Move wdParagraph, 1
            i = i + 1
        Else
            MsgBox p
        End If
    End If
Next p
End Sub
Visto che ci sono ne approfitto per fare comunque una domanda.
Come faccio a sapere l'indice di un paragrafo, cioè che un determinato paragrafo tanto per dire è il nono piuttosto che il decimo ?
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2009, 00:00   #3
zuper
Senior Member
 
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
Codice:
Sub cicla()
Dim p As Paragraph
Dim i As Integer
Dim a As Integer
a = 1
For Each p In ActiveDocument.Paragraphs
    If p.Range.Characters.Count > 1 Then
        If i = 0 Then
          '  ActiveDocument.Range.Move wdParagraph, 1
            i = i + 1
        Else
        testo = p
        a = a + 1
         MsgBox a & "-" & testo
        End If
    End If
Next p
End Sub
ho commentato la riga in mezzo perchè non so a cosa serve...ma mi pare nn serva a nulla
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi.
L'una o l'altra inutile scandalizzarsi.[plutus]
zuper è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2009, 09:10   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da john_revelator Guarda i messaggi
Ho risolto in questo modo.

Codice:
Sub cicla()
Dim p As Paragraph
Dim i As Integer
For Each p In ActiveDocument.Paragraphs
    If p.Range.Characters.Count > 1 Then
        If i = 0 Then
            ActiveDocument.Range.Move wdParagraph, 1
            i = i + 1
        Else
            MsgBox p
        End If
    End If
Next p
End Sub
Visto che ci sono ne approfitto per fare comunque una domanda.
Come faccio a sapere l'indice di un paragrafo, cioè che un determinato paragrafo tanto per dire è il nono piuttosto che il decimo ?
Codice:
    Dim testoParag As String
    Dim i As Integer
    For i = 2 To ActiveDocument.Paragraphs.Count 'in base 1
        testoParag = ActiveDocument.Paragraphs(i).Range.Text
        If Len(Trim(testoParag)) > 1 Then
            MsgBox testoParag
        End If
    Next i
Forse meglio e più compatto.
Comunque dovresti fare qualcosa di più per controllare i paragrafi ( l'unico controllo che fai è sul conto caratteri, ma possono esserci molti casi di serie di 1 o più caratteri "invisibili", come spazi, vbcrlf, vbcr, ecc... ).

Per quanto riguarda la tua domanda, direi che i paragrafi sono in base 1, perciò ciclando con un For-i, i è il numero di paragrafo nello stesso ordine in cui si trova nel doc.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2009, 09:30   #5
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Buongiorno a tutti.
Per prima cosa grazie a entrambi per la solita disponibiltà.

@Marco: stavo provando il tuo codice però sorge un problema. Come accennavo ieri notte devo saltare il titolo del documento che non necessariamente è il primo paragrafo. Stavo facendo delle prove e ho notato che se il titolo si trova nella prima riga del documento il tutto fila liscio mentre se per esempio dò alcuni caratteri di invio a inizio file, il titolo mi viene visualizzato e non escluso. Immagino quindi che il ciclo for che parte da 2 non sia ciò che fa al mio caso.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2009, 12:14   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da john_revelator Guarda i messaggi
@Marco: stavo provando il tuo codice però sorge un problema. Come accennavo ieri notte devo saltare il titolo del documento che non necessariamente è il primo paragrafo. Stavo facendo delle prove e ho notato che se il titolo si trova nella prima riga del documento il tutto fila liscio mentre se per esempio dò alcuni caratteri di invio a inizio file, il titolo mi viene visualizzato e non escluso. Immagino quindi che il ciclo for che parte da 2 non sia ciò che fa al mio caso.
Beh, in effetti più generico è il caso di utilizzo, più robusto dovrà essere il codice di controllo. Un bel passo avanti si può ottenere condizionando l'inserimento dei paragrafi ritenuti validi, in un array di appoggio.
Alla fine basterà scartare il primo elemento dell'array, che, con ogni probabilità sarà il paragrafo-titolo del doc. :

Codice:
    Dim testoParag As String
    Dim arrayParagrafiOk() As String
    Dim cntArray As Integer
    cntArray = 0
    Dim i As Integer
    For i = 1 To ActiveDocument.Paragraphs.Count
        testoParag = ActiveDocument.Paragraphs(i).Range.Text
        If Len(Trim(testoParag)) > 1 Then
            If cntArray = 0 Then
                ReDim arrayParagrafiOk(0)
            Else
                ReDim Preserve arrayParagrafiOk(cntArray)
            End If
            arrayParagrafiOk(cntArray) = testoParag
            cntArray = cntArray + 1
        End If
    Next i
    
    'ciclo di test : i=0 è il paragrafo del titolo
    For i = 1 To UBound(arrayParagrafiOk)
        MsgBox arrayParagrafiOk(i)
    Next i
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2009, 17:30   #7
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Grazie mille Marco. Sei sempre il mio forumista preferito.
Solo una cosa non mi è chiara. Perchè hai definito arrayParagrafiOk() come stringa e non come variant?
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2009, 20:06   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da john_revelator Guarda i messaggi
Grazie mille Marco. Sei sempre il mio forumista preferito.
Solo una cosa non mi è chiara. Perchè hai definito arrayParagrafiOk() come stringa e non come variant?
Perchè in questo caso non ci sono dubbi sul fatto che ogni elemento dell'array vada considerato come stringa.
Variant è il tipo più "comodo" in VB6 / VBA, ciò non vuol dire che si debba usare sempre, anzi, è anche il tipo più oneroso in quanto si forza VB ad una conversione implicita dietro le quinte, anche quando non serve. Meglio sempre usare il tipo dati più adeguato e ricorrere a Variant solo se strettamente necessario.

Ad esempio, in questo caso ( assegnazione diretta degli elementi di un array mediante la funzione "Array()" ) il tipo Variant è praticamente d'obbligo in VBA :

Codice:
    Dim a() As Variant
    a = Array("stringa1", "stringa2", "stringa3") 

    Dim b() As Variant
    b = Array(1, 2, 3)
mentre se cerco di fare :

Codice:
    Dim a() As String
    a = Array("stringa1", "stringa2", "stringa3")

    Dim b() As Integer
    b = Array(1, 2, 3)
otterrei errore in entrambi i casi...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Nuovo test di accensione dei motori per ...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
Amazon Weekend da urlo: iPhone 16 a prez...
Spotify diffida ReVanced: chiesta la rim...
Spazzolini elettrici Oral-B iO in super ...
Samsung Galaxy Watch8 Classic e Watch7 a...
Blue Origin prosegue lo sviluppo di Blue...
Roborock Saros 10 e 10R dominano il merc...
Apple scatenata su Amazon: tutti gli sco...
Canon EOS C50 è la nuova videocam...
ASUS ProArt P16 arriva in Italia: la wor...
Fujifilm presenta l'obiettivo FUJINON GF...
Il grafene ha appena 'infranto' una legg...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v