Condividi:        

[Excel]Scrivere dati selezionati da combobox

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

[Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 03/12/13 17:55

Un saluto a tutti.
Mi cimento da pochissimo tempo con il VBA e mi si sono aperte vaste strade e nuove possibilità. Peccato non abbia le conoscenze giuste in tema :oops: (ma ci sto lavorando cercando una guida per gnucchi).

Ho già cercato in rete una soluzione per il mio progettino, ma trovo le parti che credo mi siano utili, senza però riuscire a cucirle.
Vi spiego:
ho inserito nel foglio "Inserimento" una combobox che prende i valori da un intervallo di valori (B3:C7) definito sul foglio "Codici", che prevede due colonne.

Sul foglio "Inserimento" ho la necessità di popolare le celle delle colonne B, D, E, F, H, J con i valori (delle due colonne) selezionabili dalla combobox.
In sostanza, quando ci si posiziona su una delle celle di queste colonne:
- appare la combobox
- scelgo il valore visualizzando quel che è contenuto in entrambe le colonne dell'intervallo d'origine dei dati" (questo ho visto come si fa dalle impostazioni della combobox che permette la visualizzazione di entrambe le colonne) ;)
- il valore selezionato (quello di entrambe le colonne) viene scritto nella cella (ed in quella adiacente, per la seconda colonna)
:eeh:
In pratica mi manca il codice che in un dato range di celle (le colonne B, D, E, F, H, J) faccia apparire il combobox e che ne scriva i valori scelti. Spero sia chiaro.
Grazie in anticipo!
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Sponsor
 

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Flash30005 » 05/12/13 00:43

Forse è meglio l'invio del file da parte tua.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 05/12/13 08:51

Ciao Flash30005, ecco il file:
https://drive.google.com/file/d/0B47OK_ ... sp=sharing

E grazie!
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Flash30005 » 06/12/13 00:26

Inserisci nel VBA del foglio "inserimento" (non nel modulo) questo codice
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Area = "B3:J3"
If Target.Address = "$C$3" Or Target.Address = "$E$3" Or Target.Address = "$G$3" Or Target.Address = "$I$3" Then Exit Sub
If Not Application.Intersect(Target, Range(Area)) Is Nothing Then
Application.EnableEvents = False
ActiveCell.Value = Me.ComboBox1.Text
ActiveCell.Offset(0, 1).Value = Me.ComboBox1.Value
Application.EnableEvents = True
End If
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 06/12/13 09:24

Ciao Flash, grazie.
Ho fatto come detto e salvato il file come xlsm, ma non sortisce effetti.

Ho cercato di soffermarmi anche sul significato del codice: ho capito che dapprima hai definito in quali celle deve essere attivo il combobox (facendo debita esclusione di quelle adiacenti), poi non conosco esattamente i comandi, ma credo siano quelli deputati all'interrogazione del combobox e relativa scrittura del valore selezionato.

E' evidente che sto sbagliando qualcosa. Condivido il file xlsm: https://drive.google.com/file/d/0B47OK_ ... sp=sharing
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Flash30005 » 06/12/13 15:44

Non succede nulla perché non hai seguito le indicazioni date
Il codice deve essere inserito nel Vba del foglio "inserimenti" non nel modulo1 come hai fatto
comunque questo è il file "sistemato"

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 06/12/13 16:04

Ciao, confermo la mia nubbiaggiane ! :(
Nell'unico lavoro prima di questo che ho affrontato col VBA (e solo grazie ad un utente di questo forum) ho avuto a che fare con la generazione di una macro da attivare al bisogno. Non capisco quindi quando mi dici che il codice andava inserito <<non nel modulo1>>.
Libero di insultarmi. :oops:

Ho fatto girare il file che mi hai gentilmente compilato; scrive nella cella in cui mi posiziono quel che è selezionato in quel momento nel combobox. In realtà l'esigenza, probabilmente espressa male, era di posizionarsi sulla cella, e solo a quel punto dover accedere al combobox, selezionare un valore dall'elenco a discesa e far si che venisse scritto nella cella dove sono posizionato. Ti chiedo inoltre come sia possibile ripetere il meccanismo su tutte le celle delle colonne B D F H J; immagino si debba ridefinire l'area, ma poi non so come fare per escludere le colonne C E G I K.

Se hai modo di rimetterci il naso, te ne sono grato. Se possibile, commentami il codice, così cerco di imparare per le prossime volte. Ora taccio. :lol:
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Anthony47 » 07/12/13 01:47

L' equivoco nasce dal fatto che tu hai dato l' impressione che molte cose gia' le facevi, mentre in realta' molti erano i desideri e poche le cose gia' fatte...

Allora:
-hai un combobox a due colonne, prelevato dai controlli ActiveX; supponiamo si chiami ComboBox1
-ne hai gia' impostato la proprieta' ListFillRange per visualizzare i contenuti che vuoi

Tasto dx sul tab col nome del foglio su cui lavori:
-scegli "Visualizza codice"
-copia il seguente codice e incollalo nel frame VUOTO di destra
Codice: Seleziona tutto
Private Sub ComboBox1_Change()
ComboBox1.TopLeftCell.Value = ComboBox1.Column(0, ComboBox1.ListIndex)
ComboBox1.TopLeftCell.Offset(0, 1).Value = ComboBox1.Column(1, ComboBox1.ListIndex)
ComboBox1.TopLeftCell.Select
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim CheckArea As String
'
CheckArea = "B1:B10, D1:D10,  F1:F10, H1:H10, J1:J10"      '<<< Vedi testo
If Not Application.Intersect(Range(CheckArea), Target) Is Nothing Then
    ComboBox1.Visible = True
    ComboBox1.Left = Target.Left + Target.Width * 0.75
    ComboBox1.Top = Target.Top + Target.Height * 0.75
Else
    ComboBox1.Visible = False
End If
End Sub
Personalizza la riga marcata <<< con gli indirizzi su cui vuoi che compaia il combobox per consentire la scelta valori.

Poi torna sul foglio Excel e vedi l' effetto che fa.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 09/12/13 14:12

Ciao Antony, grazie.
Sortisce l'effetto desiderato. Le mie scuse per il misunderstanding iniziale. Come dicevo, sono alle prime armi.

Ora, sto vagliando di implementare una macro di invio e-mail del file appena compilato. Credo che la cosa che mi necessita sia:

1- copiare e incollare i soli valori del modulo compilato su un file xls temporaneo
2- inviare detto file via mail
3- cancellare il file temporaneo
4- pulire il file d'origine

Ho trovato un codice che esporta in pdf ed invia mail e pensavo di riadattarlo. Se ho ben inteso come funziona, credo di poter soddisfare i punti 2 e 3, restano in piedi 1 e 4. Puoi aiutarmi?

Questo il pezzo di codice (in rosso la parte che penso non mi sia utile):

Sub InviaMail_PDF()

Dim IsCreated As Boolean
Dim i As Long
Dim PdfFile As String, Title As String
Dim OutlApp As Object

' Titolo della mail
Title = "richiesta file"

' Definisce il nome del pdf
PdfFile = ActiveWorkbook.FullName
i = InStrRev(PdfFile, ".")
If i > 1 Then PdfFile = Left(PdfFile, i - 1)
PdfFile = PdfFile & "_" & ActiveSheet.Name & ".pdf"

' Esporta il foglio attivo come pdf
With ActiveSheet
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With

' Usa Outlook già aperto, se possibile
On Error Resume Next
Set OutlApp = GetObject(, "Outlook.Application")
If Err Then
Set OutlApp = CreateObject("Outlook.Application")
IsCreated = True
End If
OutlApp.Visible = True
On Error GoTo 0

' Prepara la mail con l'attach pdf
With OutlApp.CreateItem(0)

' Prepara la mail
.Subject = Title
.To = "INDIRIZZO" ' <-- QUI INDIRIZZO EMAIL
.CC = "" ' <-- QUI COPIA CONOSCENZA
.Body = "Ciao," & vbLf & vbLf _
& "Il file PDF che aspettavi." & vbLf & vbLf _
& "Saluti," & vbLf _
& Application.UserName & vbLf & vbLf
.Attachments.Add PdfFile

' Prova ad inviare
On Error Resume Next
.Send
Application.Visible = True
If Err Then
MsgBox "E-mail was not sent", vbExclamation
Else
MsgBox "E-mail successfully sent", vbInformation
End If
On Error GoTo 0

End With

' Cancella il pdf
Kill PdfFile

' Chiude outlook se aperto da questo codice
If IsCreated Then OutlApp.Quit

' Release the memory of object variable
Set OutlApp = Nothing

End Sub
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Anthony47 » 10/12/13 02:23

Non sono certissimo di aver afferrato il processo che hai in mente, provo a sviluppare i punti 1 e 4 come da richiesta.
Per questo, puoi registrare una macro mentre, partendo da un foglio diverso da quello che devi inviare:
-selezioni il foglio che ti interessa
-copi il foglio in un nuovo file (tasto dx sul tab del nome foglio, Sposta o copia, spunti Crea una copia, selezioni "Sposta i fogli selezionati" in "(nuova cartella)"; Ok)
-salvi il file in C:\prova\zcpippo.xls
A questo punto hai il file da inviare; tuttavia conviene inserire in questa stessa macro la cancellazione dell' eventuale file precedentemente creato:
-cerca nel codice della macro la riga che salva come "C:\prova\zcpippo.xls";
-subito prima inserisci l' istruzione
Codice: Seleziona tutto
If Dir("C:\prova\zcpippo.xls") = "zcpippo.xls" Then Kill ("C:\prova\zcpippo.xls")


La directory C:\prova deve esistere, quindi la creerai prima di avviare la registrazione macro.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 10/12/13 08:50

Ciao Anthony,
non ci crederai ma ieri sono già riuscito a svilupparlo da me (ed ho fatto esattamente come suggerivi) ! Forse i neuroni si stanno moltiplicando 8)
Ti passo il file, chiedendoti la cortesia di verificarlo, poichè tutto sembra funzionare, salvo un errore di runtime (errore metodo Select per la classe Range) che il debug mi indica su questa riga: ComboBox1.TopLeftCell.Select

Nota: rispetto al progetto iniziale, trovi due fogli, ma la sostanza non cambia.

https://drive.google.com/file/d/0B47OK_ ... sp=sharing

Grazie e buona giornata.
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Anthony47 » 10/12/13 13:56

Come e' noto la necessita' aguzza l' ingegno...

Modifica, nelle Combobox1_Change, l' istruzione che erra in
Codice: Seleziona tutto
If ComboBox1.Visible Then ComboBox1.TopLeftCell.Select

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]Scrivere dati selezionati da combobox

Postdi luca_aa » 10/12/13 14:48

Ancora non andava... ho cancellato l'istruzione.
Se ho capito, serviva a far posizionare la selezione della combobox sul primo valore, quando visibile.

Ancora grazie per tutto l'aiuto. :)
luca_aa
Utente Junior
 
Post: 13
Iscritto il: 14/11/13 15:57

Re: [Excel]Scrivere dati selezionati da combobox

Postdi Anthony47 » 10/12/13 20:03

Ancora non andava...
L' avevi modificata in ambedue i posti?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel]Scrivere dati selezionati da combobox":


Chi c’è in linea

Visitano il forum: Gianca532011 e 35 ospiti