Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007] le InputBox nelle macro... Opzioni
aetio
Inviato: Monday, May 30, 2011 4:36:22 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
sto cercando di capire meglio i concetti per inserire all'occorrenza nelle macro delle InputBox che permettano di eseguire alcuni comandi senza dovere aprire tutte le volte l'editor. Nel seguente caso specifico, la macro
Code:
Sub cerca1()
Dim Myvalue As Long
Myvalue = InputBox("DIGITA IL CODICE DA CERCARE IN TABELLA 1", "CERCA CODICE")
For n = 2 To Cells(2, 3).End(xlDown).Row
Set area = Range(Cells(n, 3), Cells(n, 7))
For Each cl In area
If cl = Myvalue Then
With cl
.Interior.ColorIndex = 36
End With
End If
Next cl
Set area = Nothing
Next n
End Sub

cerca da riga 2 all'ultima riga scritta della tabella, da col.3 a col.7, il codice che si inserisce nella InputBox e ne colora la cella col colore 36
Supponendo di volere mantenere l'impianto organizzativo della macro, ma di volere aggiungere una InputBox che mi permetta di effettuare sì la ricerca nel Range(Cells(n, 3), Cells(n, 7)), ma specificando una delle colonne da 3 a 7 in cui effettuare la ricerca come mi devo comportare?
Ho provato a leggere con attenzione quest'altra stupenda macro che il caro a10n11 mi ha appositamente preparato
Code:
Sub cerca2()
Dim Myvalue As Long
Dim Mycolor As Long
Myvalue = InputBox("DIGITA IL CODICE DA CERCARE", "CERCA CODICE")
Mycolor = InputBox("DIGITA RIFERIMENTO COLORE : numerico", "DIGITA COLORE")
For n = 2 To Cells(2, 3).End(xlDown).Row
Set Area = Range(Cells(n, 3), Cells(n, 7))
For Each cl In Area
If cl = Myvalue Then
With cl
.Interior.ColorIndex = Mycolor
End With
End If
Next cl
Set Area = Nothing
Next n
End Sub

in cui ha aggiunto la InputBox Mycolor che consente di colorare la cella col colore che desidero in quel particolare momento della ricerca (multipla, dato che ho poi la possibilità di avere evidenziati parecchi codici nella stessa tabella, con enorme comodità di consultazione!!).
Ho cercato di ricavarne i concetti per cavarmela da solo senza dovere tutte le volte chiedere aiuto per queste piccolezze, ma confesso pubblicamente i miei enormi limiti nei confronti di questa stupenda Scienza che non consente né approssimazioni, né invenzioni strampalate, pur concedendo la fantasia di nominare a piacere le variabili (che non è poco)... Chiedo lumi: che variazioni bisogna apportare al testo della macro?
Grazie infinite e buona serata
eZio
Sponsor
Inviato: Monday, May 30, 2011 4:36:22 PM

 
a10n11
Inviato: Monday, May 30, 2011 6:05:38 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
ti basta assegnare ad un'altra variabile il valore di colonna su cui effettuare la ricerca.

vedi come modificare:

Sub cerca1()
Dim Myvalue As Long
Dim Mytab As Long
Myvalue = InputBox("DIGITA IL CODICE DA CERCARE IN TABELLA 1", "CERCA CODICE")
Mytab = InputBox("COLONNA TABELLA DOVE EFFETTUARE LA RICERCA", "NUMERO COLONNA TABELLA")
Mytab = Mytab + 2
ur = Cells(2, 3).End(xlDown).Row
For n = 2 To ur
Set area = Range(Cells(n, Mytab), Cells(ur, Mytab))
For Each cl In area
If cl = Myvalue Then
With cl
.Interior.ColorIndex = 36
End With
End If
Next cl
Set area = Nothing
Next n
End Sub

Nel caso della soprastante macro, la variabile Mytab, richiede il numero della colonna di tabella 1 su cui effettuare la ricerca. Nota: La tabella 1 ha 5 colonna da 3 a 7 . se si vuole effettuare la ricerca sulla
1 colonna della tabella si dovrà indicare il numero 1 il numero 2 per la secondo ecc.
saluti
Giap

aetio
Inviato: Monday, May 30, 2011 6:34:23 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Grazie assai!! E' bellissima. Prima di interpellarti ho cercato anche nel sito di ennius, che parla abbastanza bene di questo argomento, ma non ho trovato nulla di specifico che assomigli neppure lontanamente a questa tua meraviglia...
La cosa veramente che mi sorprende di più è l'essenzialità delle tue creature... con quattro righe (pure corte...) riesci a far fare tutto il lavoro in modo elegante e sopra tutto ordinato...
Grazie ancora... e buona serata,
eZio

aetio
Inviato: Monday, May 30, 2011 8:55:20 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
chiedo scusa, ma non riesco a capire perché al lancio della macro... non termina (rimane attiva la clessidra) e devo terminare l'operazione usando il tasto Esc. Al ché in tabella- fino in fondo- il codice è correttamente evidenziato... non capisco da cosa possa dipendere, dato che l'impianto della macro è stato mantenuto fedele a quello precedente e i riferimenti della tabella1 sono giusti...
Grazie assai e buona serata
eZio
a10n11
Inviato: Monday, May 30, 2011 10:34:36 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
premendo il tasto Esc ti rimanda al codice della macro con evidenziata in giallo la riga del codice dove è stato sospeso? se è così bisognerebbe vedere il valore delle variabili in modo particolare il valore di "ur"
saluti
Giap


aetio
Inviato: Monday, May 30, 2011 10:37:51 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,

End With
End If
Next cl
Set area = Nothing
Next n

Il codice scritto in rosso è quello evidenziato in giallo nell'editor.

Ho lasciato trascorrere del tempo e alla fine la macro ha terminato regolarmente... forse bisogna solo limitare il campo di ricerca anche nelle colonne, poiché ur individua l'ultima riga scritta, ma Mytab non ha un range definito in larghezza per cui cerca in tutte le colonne compilate (le tabelle proseguono fino a col.AH); forse basterebbe suggerirgli di cercare solo da col.3 a col.7... Se sbaglio bacchettami senza pietà!! :))

La tabella da scansionare con questa macro inizia da riga 18, da col.3 a col.7, senza righe di interruzione fino al termine della tabella, per cui nella macro ho impostato il codice
Code:
ur = Cells(18, 3).End(xlDown).Row
For n = 18 To ur
Set Area = Range(Cells(n, Mytab), Cells(ur, Mytab))
etc.




Grazie e buona giornata,
eZio
a10n11
Inviato: Tuesday, May 31, 2011 9:39:31 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
rivista la macro e vista la castroneria che mandava in loop il codice. Praticamente si costringeva la macro a rieseguire il codice per tante volte per quante le righe della tabella. Il risultato veniva corretto ma si faceva impazziere il codice.
questo è il codice corretto.

Sub cerca1()
Dim Myvalue As Long
Dim Mytab As Long
Myvalue = InputBox("DIGITA IL CODICE DA CERCARE IN TABELLA 1", "CERCA CODICE")
Mytab = InputBox("COLONNA TABELLA DOVE EFFETTUARE LA RICERCA", "NUMERO COLONNA TABELLA")
Mytab = Mytab + 2
ur = Cells(18, 3).End(xlDown).Row
Set area = Range(Cells(18, Mytab), Cells(ur, Mytab))
For Each cl In area
If cl = Myvalue Then
With cl
.Interior.ColorIndex = 36
End With
End If
Next cl
Set area = Nothing
End Sub

saluti
Giap

aetio
Inviato: Tuesday, May 31, 2011 9:50:10 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Grazie infinite per tutto... anche per non avermi dato pubblicamente dell'Asino. ahahahah
Il dimensionamento di Mytab non c'entrava una cippa. E' n che generava l'impazzimento della routine...
Grazie assai e buona giornata, corro subito a sostituire la macro...
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.