VBA Excel

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
DRoberto
00lunedì 11 aprile 2016 19:54
Questo codice VBA lo voglio modificare in modo che possa cambiare all'occorrenza il foglio di lavoro (Workshhets) e l'intervallo di celle (Range).


Public Sub ContaCelleDaDestra()
Dim nNumCell As Integer
Dim nConta As Integer
Dim rBlocco As Range
Worksheets("base").Activate
Set rBlocco = Worksheets("Base").Range("A1:A30")
For nConta = 1 To 30
If Right(rBlocco(nConta).Value, 4) = "Beta" Then
nNumCell = nNumCell + 1
rBlocco(nConta).Interior.ColorIndex = 40
End If
Next nConta
MsgBox "Nell'intervallo A1:A30 vi sono " & nNumCell & " celle che contengono la stringa Beta " _
& "nelle ultime quattro posizioni"
End Sub

Come si può fare ?

Buona serata.
patel45
00martedì 12 aprile 2016 09:09
questa funziona su un range selezionato
Sub ContaCelleDaDestra()
For Each cell In Selection
If Right(cell, 4) = "Beta" Then
  nNumCell = nNumCell + 1
  cell.Interior.ColorIndex = 40
End If
Next
MsgBox "Nell'intervallo selezionato vi sono " & nNumCell & " celle che contengono la stringa Beta "
End Sub
DRoberto
00martedì 12 aprile 2016 10:01
Re:
patel45, 12/04/2016 09.09:

questa funziona su un range selezionato
Sub ContaCelleDaDestra()
For Each cell In Selection
If Right(cell, 4) = "Beta" Then
  nNumCell = nNumCell + 1
  cell.Interior.ColorIndex = 40
End If
Next
MsgBox "Nell'intervallo selezionato vi sono " & nNumCell & " celle che contengono la stringa Beta "
End Sub




Questa sub la devo inserire nella mia ?
Tutta sola non serve a niente.

Al rigo 2: For Each cell In Selection
Selection fa riferimento a quale selezione ?
Il punto è proprio quello.
Avevo chiesto come modificare il codice VBA proprio per indicare tramite inputbox qual'era l'intervallo di celle o il foglio di lavoro.
locatevaresino
00martedì 12 aprile 2016 13:00
ciao

da inserire in un Modulo standard


Public Sub ContaCelleDaDestra()
Dim nNumCell As Long
Dim nConta As Variant
Dim rBlocco As Range
Dim NomeF As String
Dim NomeVer As String
Dim R_ange As String
nNumCell = 0
NomeF = InputBox("Nome del foglio da valutare")
NomeVer = InputBox("Nome da verificare")
R_ange = InputBox("Range da valutare : ess. A1:A30 ")

Worksheets(NomeF).Activate
Set rBlocco = Worksheets(NomeF).Range(R_ange)
For Each nConta In rBlocco
If nConta = NomeVer Then
nNumCell = nNumCell + 1
nConta.Interior.ColorIndex = 40
End If
Next
Set rBlocco = Nothing
MsgBox "Nell'intervallo " & R_ange & " vi sono " & nNumCell & " celle che contengono la stringa" & NomeVer & "" _
& "nelle ultime quattro posizioni"
End Sub



patel45
00martedì 12 aprile 2016 13:03
Re: Re:
DRoberto, 12/04/2016 10.01:




Questa sub la devo inserire nella mia ?
Tutta sola non serve a niente.



non devi inserirla nella tua, devi soltanto selezionare manualmente il range in cui cercare e lanciare la macro
DRoberto
00martedì 12 aprile 2016 15:06
Re:
locatevaresino, 12/04/2016 13.00:

ciao

da inserire in un Modulo standard


Public Sub ContaCelleDaDestra()
Dim nNumCell As Long
Dim nConta As Variant
Dim rBlocco As Range
Dim NomeF As String
Dim NomeVer As String
Dim R_ange As String
nNumCell = 0
NomeF = InputBox("Nome del foglio da valutare")
NomeVer = InputBox("Nome da verificare")
R_ange = InputBox("Range da valutare : ess. A1:A30 ")

Worksheets(NomeF).Activate
Set rBlocco = Worksheets(NomeF).Range(R_ange)
For Each nConta In rBlocco
If nConta = NomeVer Then
nNumCell = nNumCell + 1
nConta.Interior.ColorIndex = 40
End If
Next
Set rBlocco = Nothing
MsgBox "Nell'intervallo " & R_ange & " vi sono " & nNumCell & " celle che contengono la stringa" & NomeVer & "" _
& "nelle ultime quattro posizioni"
End Sub







Ho provato ma non funziona. In particolare al rigo:
If nConta = NomeVer Then
manca il riferimento: Right(rBlocco(nConta).Value, 4)
Come si può migliorare ?
locatevaresino
00martedì 12 aprile 2016 16:39
ciao

Right(rBlocco(nConta).Value, 4) cosa serve a fare questo ?????

in quanto ( nConta ) nelle sue propieta' e' gia' specificata la
Riga
colonna
valore
il colore
e tutto quanto

il problema forse se lo spieghi , comunque vado a spanne, sta che
tu in una cella puoi avere le parole
beta
betatext
beta x

e quindi se solamente trovi le prime 4 lettere ( beta ) le altre sono valide

e' questo il tuo problema ????
se si basta fare una piccola modifica alla sub

da così
If nConta = NomeVer Then
a sosì
If UCase(Mid(nConta, 1, 4)) = UCase(NomeVer) Then

PS ALLEGARE SEMPRE UN FILE CON LE DOVUTE SPIEGAZIONI


locatevaresino
00martedì 12 aprile 2016 22:04
riciao

visto che tu prendi le cifre da destra verso sinistra nel tuo post
in base a quello il controllo va effettuato in questa maniera

If UCase(Right(nConta, Len(NomeVer))) = UCase(NomeVer) Then

DRoberto
00mercoledì 13 aprile 2016 10:22
Re:
locatevaresino, 12/04/2016 22.04:

riciao

visto che tu prendi le cifre da destra verso sinistra nel tuo post
in base a quello il controllo va effettuato in questa maniera

If UCase(Right(nConta, Len(NomeVer))) = UCase(NomeVer) Then





[SM=x423028] [SM=x423028]

Funziona benissimo !!
Grazie.

Con questo codice VBA mi sto esercitando. Lo stesso codice potrebbe essere usato con il comando Left al posto di Right.
Per altre evoluzioni, ripresenterò questa discussione.

Cordiali saluti.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 09:27.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com