Grazie Paolo per la(e) tempestiva(e) risposte...

Paolo Mantovani ha scritto:

riguardo la funzione inputbox di VBA: Magari sono rimasto un po
indietro, ma a quanto ricordo, inputbox di VBA è modale tanto quanto
inputbox di StarBASIC (modale = non consente di cliccare sulla
finestra sottostante) Però può anche darsi che in un impeto di
user-friendly-smo i programmatori MS abbiano sporcato la funzione
inputbox per fargli fare questa cosa orribile. Diciamo che non ci ho
mai fatto caso.

Infatti era un trucchetto poco pubblicizzato... ma non so so se
lavorasse anche su un range, ma su una cella sì:

set oDestinazione = Application.Inputbox("prompt:="Clicca sulla cella di
destinazione...")

e ottenevi l'indirizzo della cella dove volevi spostare il range-

Nello scorso millennio :-) quando programmavo macro di Excel, se
avevo necessità di far scegliere un range all'utente, usavo un
controllo specifico che si poteva aggiungere ai dialoghi
personalizzati di VBA (non ricordo il nome del controllo al momento).

Il mio problema non è selezionare un range, ma banalmente selezionare
una singola cella che mi consentirà di individuare la row dove inserire
(down ovviamente) il range che già era selezionato.

Ovvero si tratta di spostare in altra posizione una voce di computo (o
una analisi di prezzo), che sono record su più righe (range).

In ogni caso ti allego un esempio.

:-(  e pensare che la giornata si prospettava buona... :-)

Questo unolistener mi fa venire il mal di testa... ma se lo prendo come
un atto di fede forse me la cavo...


Sub TestRangeSelection() ...zot...
fino a quì, con tutta la fede necessaria... tutto OK

mArgs(1).Value = "My Title" mArgs(2).Name = "CloseOnMouseRelease"

Qui invece mi inciampo... perchè vuole che si selezioni un range... mentre a me interessa una cella e se l'utente cerca di selezionare un range vorrei che una bacchetta calasse sulle sue dita... (mai fidarsi dell'utente...) Ma sembrerebbe dai vari mArgs che in realtà venga prelevato solo il valore di inizio del range (e tanto mi basterebbe)

mArgs(2).Value = False

Sto ancora trafficando... ed ho provato a mettere Value = true... e in questo modo la finestrella si chiude da sola (ottima cosa), ma non ho ancora capito se in tal caso mi registra qualcosa... Comunque ho ingenuamente provato ad inserire in coda al tuo codice una variabile che mi registrasse i risultati di tutto quel lavoro... ma la cosa sembra non funzionare...
e cioè:

Sub TestRangeSelection()
        'omissis
        'omissis
oPippo = oDocView.startRangeSelection(mArgs()) 'modifica mia
print oPippo ' aggiunta mia
End Sub

... ma quando si apre la finestra CONTEMPORANEAMENTE si apre anche la finestra del print... che ovviamente è ancora vuota... e fino a quando non clicco l'oK. non posso proseguire....
Insomma a volte la fede non basta...
;-)

Credo la soluzione vada di pari passo con la comprensione delle Sub che mi hai aggiunto dopo... ma - per il momento - non le ho capite...
Sei sicuro di avermi incollato tutto?
Ma questo oEvent da dove arriva? e sopratutto, dove va?

sub oDocView_done(oEvent) MsgBox oEvent.RangeDescriptor

Si infatti mi piacerebbe molto avere la possibilità di una prompt del tipo: "Seleziona la destinazione...."

Più in generale mi piacerebbe avere un codice del tipo:

Sub Sposta_una_Analisi
' .... dopo vari traballamenti e sbatacchiamenti (che ti risparmio)
' mi ritrovo, ad avere un range selezionato
oDestinazione = TestRangeSelection ' ma come function
                                    ' funzionerà ancora?
'estraggo i dati da oDestinazione localizzando la row
'faccio spazio con righe vuote e incollo il range di partenza
end sub

Ma come dicevo sopra c'è qualcosa di profondamente sbagliato nelle mie intenzioni...

... intanto continuo a ravanare... se ci sono novità scrivo!

Grazie ancora

Bart

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Rispondere a