Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-07-2009, 23: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 04-07-2009, 00: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, 01: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, 10: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, 10: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, 13: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, 18: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, 21: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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Tory Bruno ha lasciato la società...
L'immagine di Natale del telescopio spaz...
STMicroelectronics e SpaceX proseguono l...
Numeri da record, Xiaomi distribuisce ol...
BitLocker accelerato via hardware: Micro...
Blue Origin prosegue lo sviluppo dei lan...
Moore Threads: nuove GPU 15 volte pi&ugr...
Steam diventa esclusivamente 64-bit: Val...
La Corte Suprema restituisce a Elon Musk...
X lancia Creator Studio su mobile: nuovi...
Dieci anni fa SpaceX fece atterrare per ...
POCO M8 e M8 Pro arriveranno nel 2026: e...
Caos Formula 1: il motore Mercedes &egra...
Tariffe nazionali per le chiamate e gli ...
Tassa chilometrica non solo per elettric...
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: 00:17.


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