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

[VBA] - Nessuna selezione Opzioni
dead
Inviato: Monday, September 27, 2010 5:21:24 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,597
Ciao,
ho fatto una macroche per funzionare necessita che l'utente abbia prima fatto una selezione.
Per evitare errori a runtime ho messo un controllo per vedere se la selezione è stata fatta (in pratica sto scrivendo il VBA come se fosse il python che conosco meglio Drool ):

Code:
If Not Selection Then
    a = MsgBox("you have to select the area to format", vbInformation, "Attention!")
    Exit Sub
End If


il problema è che alla prima linea mi da errore di runtime '13': Tipo non corrispondente.
cosa devo mettere di preciso?

Grazie.



Sono cosi avanti che quando guardo indietro vedo il futuro.
Sponsor
Inviato: Monday, September 27, 2010 5:21:24 PM

 
a10n11
Inviato: Monday, September 27, 2010 7:25:13 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
stiamo parlando di excel??

una cella selezionata ci sarà sempre nel foglio. Se la tua intenzione è quella che sia selezionato un determinato range, prova con queste istruzioni:

Miaselezione = "$A$1:$C$10"
If Selection.Address <> Miaselezione Then
a = MsgBox("you have to select the area to format", vbInformation, "Attention!")
Exit Sub
End If

il codice sopra controlla che sia selezionata l'area A1:C10

saluti
Giap


dead
Inviato: Tuesday, September 28, 2010 12:00:02 AM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,597
Purtroppo la selezione non è sempre la stessa, però una condizione sufficiente sarebbe già quella di lanciare la macro se ci sono almeno 2 o più celle selezionate (significa che l'utente ha fatto una selezione volontaria).
Qualcosa del tipo (sto inventando, non conosco gli attributi di Selection):

If Selection.size > 1 then
mia_subroutine_di_formattazione()
end if



Sono cosi avanti che quando guardo indietro vedo il futuro.
aetio
Inviato: Tuesday, September 28, 2010 7:40:34 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
chiedo scusa se m'intrometto, ma la mia curiosità in questa affascinante materia è tale che non riesco a starne fuori :)).....quel codice dove va inserito, nel modulo "ThisWorkbook" già visto?
Grazie e Buona giornata,
eZio
dead
Inviato: Tuesday, September 28, 2010 8:17:03 AM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,597
Normalmente il codice sta in un modulo a parte, così è più gestibile e riutilizzabile. Almeno, io faccio così.


Sono cosi avanti che quando guardo indietro vedo il futuro.
a10n11
Inviato: Tuesday, September 28, 2010 10:30:01 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
dead ha scritto:
Purtroppo la selezione non è sempre la stessa, però una condizione sufficiente sarebbe già quella di lanciare la macro se ci sono almeno 2 o più celle selezionate (significa che l'utente ha fatto una selezione volontaria).
Qualcosa del tipo (sto inventando, non conosco gli attributi di Selection):

If Selection.size > 1 then
mia_subroutine_di_formattazione()
end if


salve
la sintassi è questa:
If Selection.Cells.Count>1 then

saluti
Giap


dead
Inviato: Tuesday, September 28, 2010 10:33:28 AM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,597
grazie Giap!

P.S. ma perchè se in VBA scrivo Selection. dopo il punto non appare la finestra a cascata delle proprietà? Per alcuni oggetti appare, per altri no. Non ho capito bene il perchè...


Sono cosi avanti che quando guardo indietro vedo il futuro.
a10n11
Inviato: Tuesday, September 28, 2010 11:18:44 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
dead ha scritto:
grazie Giap!

P.S. ma perchè se in VBA scrivo Selection. dopo il punto non appare la finestra a cascata delle proprietà? Per alcuni oggetti appare, per altri no. Non ho capito bene il perchè...


salve
la differenza sta nel fatto che "Selection" è una proprietà
le proprietà che vedi elencate come suggerimento, fanno riferimento agli oggetti.
es. se digiti Range(x). dopo il punto ti vengono elencate tutte le proprietà dell'oggetto Range
saluti
Giap

dead
Inviato: Tuesday, September 28, 2010 1:53:12 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,597
a10n11 ha scritto:

la differenza sta nel fatto che "Selection" è una proprietà


Selection.Cells.Count

una proprietà che ha a sua volta delle proprietà e dei metodi? Mah, le regole del buon Bill sono sempre misteriose...


Sono cosi avanti che quando guardo indietro vedo il futuro.
a10n11
Inviato: Tuesday, September 28, 2010 5:11:09 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
dead ha scritto:
a10n11 ha scritto:

la differenza sta nel fatto che "Selection" è una proprietà


Selection.Cells.Count

una proprietà che ha a sua volta delle proprietà e dei metodi? Mah, le regole del buon Bill sono sempre misteriose...


salve dead

la tua perplessità mi ha incuriosito e indagando mi sono accorto di aver dato una risposta senza senso.

andando a curiosare nel visualizzatore oggetti, la proprietà Selection è definita come "As Object" cioè come oggetto non definito, potrebbe essere di tipo Range, come di tipo Chart oppure di qualsiasi oggetto selezionato nel foglio. Non sapendo a che tipo di oggetto riferirsi non può mostrarti nè i metodi nè le proprietà.

se avessimo scritto:

Sub dd()
Dim area As Range
Set area = Selection
area.Cells.Count
Set area = Nothing
End Sub

il punto dopo area ti avrebbe mostrato metodi e proprietà perchè la selection è stata definita di tipo range.

spero di non avre fatto ulteriore confusione.
saluti
Giap

dead
Inviato: Tuesday, September 28, 2010 7:09:51 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,597
hmm ecco dov'era l'inghippo!
Beh allora c'è ancora speranza anche per lo zio Bill :D

perfetto e preciso come sempre.
Grazie


Sono cosi avanti che quando guardo indietro vedo il futuro.
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.