Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Problemino da Risolvere in VBA

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Problemino da Risolvere in VBA

Postdi A.Maurizio » 25/01/15 16:28

Ciao a tutti mi chiamo Maurizio ; Ho un problema che vorrei Risolvere in VBA .
Il mio problema e questo : Su di un Foglio di excel a partire dalla Cella B4:K13 li ho numerati per Ottenere la Tabellina del Nove .
Ora il mio Problema e questo : Io Vorrei che tutte le Volte che Scrivo nella Calla B1 un numero Che varia dall' 1 al 10 ; Idem per la Cella D1 , Entrambi vengano Sommati tra di loro ; e che tale risultato si vada a Collocare nella sua esatta posizione indicandomi il Numero Trovato con il Colore Rosso ; e di Colore Verde le due Traiettorie o coordinate ; come ad Esempio :
Io ho provato a fare Questa Cosa che a dire il Vero in parte mi funziona benissimo e cioè :

X = Range("B1").Value
Y = Range("D1").Value
Z = X * Y
Range("H15").Value = Z

Select Case Range("H15").Value

Case Is = 2
If Not (Range("B1").Value = 1 Or Range("D1").Value = 2) Then ' Uno Per Due ho Viceversa
Uno
Else
UnoBis
End If

Questo per Trovare ed indicare il Numero 2 * 1 Sia in orizzontale che in verticale ; Torno a ripetere Cosi funziona Benissimo ; però il Mio problema e Questo :
Come Faccio a far Visualizzare una terza Incognita quando ad esempio Io voglio Sommare ( 2 * 2 = 4 )

io ho provato anche a fare una Seconda If Then all'interno di questa ma nulla da fare ; come ad Esempio :

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Case is = 2
If Not (Range("B1").Value = 1 Or Range("D1").Value = 2) Then
Due
End If

If Not (Range("B1").Value = 2 Or Range("D1").Value = 1) Then
DueBis
End If

If Not (Range("B1").Value = 2 And Range("D1").Value = 2) Then
Due_Per_Due
End If

Function Due()
On Error Resume Next
Range("B4:K13").Interior.ColorIndex = 2
Range("B4:K13").Font.ColorIndex = 1

Range("C4:K4").Select 'Coordinata Orizzontale
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Range("C4:C13").Select 'Coordinata Verticale
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Range("C4").Select 'Coordinata Numero da Identificare
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
End Function

Spero di Essere riuscito ad essere abbastanza chiaro , per il Resto lascio a Voi tutte le modifiche del Caso , Grazie per tutto l'aiuto che riuscirete a darmi in merito , Sinceri Saluti da A. Maurizio
A.Maurizio
Utente Senior
 
Post: 116
Iscritto il: 02/08/13 15:39

Sponsor
 

Re: Problemino da Risolvere in VBA

Postdi ricky53 » 25/01/15 18:39

Ciao,
l'operazione che vuoi fare è sempre la moltiplicazione?
Solo la tabellina del nove in B4:K13?
Probabilmente volevi dire "la Tabellina Pitagorica" che va da 1 a 10"
"Uno" e "UnoBis" son due macro? Puoi inviare il codice di queste macro?
E qui:
Come Faccio a far Visualizzare una terza Incognita quando ad esempio Io voglio Sommare ( 2 * 2 = 4 )
dovresti chiarire cosa vuoi ottenere ( a parte il "Sommare" scritto, probabilmente per errore, al posto di "Moltiplicare")

Si può avere un file di esempio?
Riporta come vorresti avere i dati
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Problemino da Risolvere in VBA

Postdi Flash30005 » 25/01/15 23:53

Quesito non esposto molto bene
Comunque se ho interpretato correttamente cosa si intende ottenere questa macro da inserire in un modulo dovrebbe risolvere
Codice: Seleziona tutto
Sub ColInters()
    Range("C4:K13").Interior.ColorIndex = 2
    Range("C4:K13").Font.ColorIndex = 1
    Cells([B1] + 3, [D1] + 2).Interior.ColorIndex = 3
    Cells([B1] + 3, [D1] + 2).Font.ColorIndex = 2
    Cells([D1] + 3, [B1] + 2).Interior.ColorIndex = 3
    Cells([D1] + 3, [B1] + 2).Font.ColorIndex = 2
End Sub


per attivarla automaticamente al variare di B1 o di D1
bisogna inserire questo codice nel vba del foglio che contiene la tabella
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" And Target.Address <> "$D$1" Then Exit Sub
ColInters
End Sub


ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Problemino da Risolvere in VBA

Postdi ricky53 » 26/01/15 00:36

Ciao,
leggi il suggerimento di Flash.

Ecco il mio
Codice: Seleziona tutto
Sub Trova_Risultato_e_Colora()
    With Range("B4:K13")
        .Interior.ColorIndex = xlNone ' <<=== Toglie i colori alle celle
        .Font.ColorIndex = 1 ' <<=== imposta il colore del font a "nero"
    End With
   
   
    Cells([B1] + 3, [D1] + 1).Interior.ColorIndex = 3 ' <<=== Colora la prima cella del risultato
    Range(Cells([B1] + 3, 2), Cells([B1] + 3, [D1])).Interior.ColorIndex = 4 ' <<=== Colora riga del primo risultato
    Range(Cells(4, [D1] + 1), Cells([B1] + 2, [D1] + 1)).Interior.ColorIndex = 4 ' <<=== Colora colonna del primo risultato
   
   
    Cells([D1] + 3, [B1] + 1).Interior.ColorIndex = 3 ' <<=== Colora la SECONDA cella del risultato
    Range(Cells([D1] + 3, 2), Cells([D1] + 3, [B1])).Interior.ColorIndex = 6 ' <<=== Colora riga del SECONDO risultato
    Range(Cells(4, [B1] + 1), Cells([D1] + 2, [B1] + 1)).Interior.ColorIndex = 6 ' <<=== Colora colonna del SECONDO risultato
End Sub


Non mi era chiaro cosa ti occorreva e ... ci ho messo del mio pensando che ti potesse essere utile.
Aggiornaci
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Problemino da Risolvere in VBA

Postdi ricky53 » 26/01/15 00:54

Ciao,
ecco una nuova versione (la prima versione non gestiva bene il valore "1x1", l' "1x2" e il "2x1"
Codice: Seleziona tutto
Sub Trova_Risultato_e_Colora()
    With Range("B3:K13")
        .Interior.ColorIndex = xlNone ' <<=== Toglie i colori alle celle
        .Font.ColorIndex = 1 ' <<=== imposta il colore del font a "nero"
    End With
   
   
    Cells([B1] + 3, [D1] + 1).Interior.ColorIndex = 3 ' <<=== Colora la prima cella del risultato
    Cells([D1] + 3, [B1] + 1).Interior.ColorIndex = 3 ' <<=== Colora la SECONDA cella del risultato
   
    If [B1] > 1 And [D1] > 1 Then
        Range(Cells([B1] + 3, 2), Cells([B1] + 3, [D1])).Interior.ColorIndex = 4 ' <<=== Colora riga del primo risultato
        Range(Cells(4, [D1] + 1), Cells([B1] + 2, [D1] + 1)).Interior.ColorIndex = 4 ' <<=== Colora colonna del primo risultato
   
        Range(Cells([D1] + 3, 2), Cells([D1] + 3, [B1])).Interior.ColorIndex = 6 ' <<=== Colora riga del SECONDO risultato
        Range(Cells(4, [B1] + 1), Cells([D1] + 2, [B1] + 1)).Interior.ColorIndex = 6 ' <<=== Colora colonna del SECONDO risultato
    End If
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Problemino da Risolvere in VBA

Postdi ricky53 » 26/01/15 02:25

Ciao,
ecco
Immagine
quanto ho immaginato e che ho tradotto nel codice del mio precedente intervento.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Problemino da Risolvere in VBA

Postdi A.Maurizio » 26/01/15 14:56

Grazie Infinite a Tutti Voi in Quanto dire Semplicemente che siete dei Genii , e a dir poco del tutto Sinceri .
Siete dei Maghi dell'informatica Applicata ; In poche parole grazie di Tutto Cuore per il Vostro Aiuto ; Sinceri Saluti da A. Maurizio
A.Maurizio
Utente Senior
 
Post: 116
Iscritto il: 02/08/13 15:39

Re: Problemino da Risolvere in VBA

Postdi ricky53 » 26/01/15 15:16

Ciao,
... che dire se non "ti sono grato" !

Come sono andate le prove?
Che soluzione hai adottato?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Problemino da Risolvere in VBA

Postdi A.Maurizio » 26/01/15 15:55

Scusate Vorrei Solo Capiere questo concetto ; Perchè qui :


Cells([B1] + 3, [D1] + 1).Interior.ColorIndex = 3 ' <<=== Colora la prima cella del risultato
Cells([D1] + 3, [B1] + 1).Interior.ColorIndex = 3 ' <<=== Colora la SECONDA cella del risultato

Subito Dopo aver Scritto Cells Avete racchiuso il D1 : B1 con le Quadre !
Vi chiedo Semplicemete questo in quanto Voglio Capire per approfondire meglio la mia Conoscenza Tutto qui.
Grazie da A.Maurizio
A.Maurizio
Utente Senior
 
Post: 116
Iscritto il: 02/08/13 15:39

Re: Problemino da Risolvere in VBA

Postdi Flash30005 » 26/01/15 16:17

Cell(Riga, Colonna). e qui puoi, selezionare, cambiare etc etc
[B1] = a range("B1").value
al posto di scrivere Range("B1").value puoi anche scrivere [B1]

Nella mia soluzione (vedi su) avevo utilizzato questo metodo con Cell([B1]+ 3, [D1] + 2).interior.coloindex = 3 per colorare l'intersezione tra la riga pari al valore di B1+ 3 e colonna pari al valore di D1 + 2 perché avevo creato una testata come da immagine

Soluzione che ha ricevuto consenso visto che è stata adottata nelle macro successive :D

Immagine
invia immagini

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Problemino da Risolvere in VBA

Postdi A.Maurizio » 26/01/15 16:23

Si Flash fi a li c'ero arrivato anche io nel Capire tutto questo .
Però ciò che non riesco a Comprendere e perchè hai adottato le parentesi Quadre e non hai usato semplicemente quelle Tonde ! tutto qui .
Grazie infinite , e scusate tutti per i disturbo ; Saluti da A. maurizio
A.Maurizio
Utente Senior
 
Post: 116
Iscritto il: 02/08/13 15:39

Re: Problemino da Risolvere in VBA

Postdi Flash30005 » 26/01/15 16:32

E' una sintassi del Vba per indicare proprio il valore della cella con le tonde (B1) andrebbe in errore
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Problemino da Risolvere in VBA

Postdi A.Maurizio » 26/01/15 16:50

Grazie Infinite Nuovamente Buona Serata a tutti da A. Maurizio
A.Maurizio
Utente Senior
 
Post: 116
Iscritto il: 02/08/13 15:39

Re: Problemino da Risolvere in VBA

Postdi ricky53 » 26/01/15 18:41

Ciao,
il codice che hai riportato era quello che ti avevo inviato io.
I commenti servivano a farti capire ogni istruzione cosa faceva.
Per verificarlo devi eseguire il codice passo passo (ossia con "F8") e, dopo ogni istruzione, vedere cosa viene prodotto.
Dall'immagine che ti ho allegato puoi vedere il risultato finale.

Mi viene il dubbio che tu non abbia provato quanto ti ho inviato ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Problemino da Risolvere in VBA":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti