Condividi tramite

MsgBox se aggiungo dato (in apertura UserForm)

Anonimo
2019-06-29T10:11:25+00:00

Ciao a tutti,

in Sheet2 ho un database (da C3 a C39 ci sono i nomi, quello che interessa), in A ci stanno i numeri identificativi, in B la specializzazione, in D le email.

In Sheet1 ho un pulsante che se cliccato mi apre l'userform.

Nell'userform ho una combobox i cui ho caricato i dati e delle textbox in cui mi carica i dati relativi al valore scelto.

Io vorrei che se aggiungo dei dati (prima di aprire l'userform) nel momento in cui apro l'userform mi esca un message box che dice "sono stati aggiunti nome".

Esempio: apro la cartella, mi posiziono in Sheet2, in C40 aggiungo "Pinco Pallino", mi sposto in Sheet1, apro l'userform, esce il message box "è stato aggiunto Pinco Pallino".

Sarebbe possibile fare ciò?

Grazie in anticipo a chi vorrà darmi una mano e buon weekend a tutti!

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2019-06-29T12:32:30+00:00

    Ciao Sol39,

    Qui trovi il link al file: https://we.tl/t-zb5QVlgWnD

    Vorrei suggerire di utilizzare la colonna E su Sheet2 come colonna di appoggio; questa colonna può anche essere nascosta se lo si desidera.

    Quindi, prova qualcosa del genere:

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

    '=========>>

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim Rng As Range, rCell As Range

        Set Rng = Intersect(Me.Columns(sColonna_Nomi), Target)

        If Not Rng Is Nothing Then

            For Each rCell In Rng.Cells

                Intersect(rCell.EntireRow, _

                       Columns(sColonna_Di_Appoggio)).Value = sParola_Chiave

            Next rCell

        End If

    End Sub

    '<<=========

    Nel tuo modulo standard, incolla il seguente codice:

    '=========>>

    Option Explicit

    Public Const sColonna_Nomi As String = "C"                '<<=== Modifica

    Public Const sColonna_Di_Appoggio As String = "E"    '<<=== Modifica

    Public Const sParola_Chiave As String = "New"             '<<=== Modifica

    '--------->>

    Public Sub mostra()

        UserForm1.Show

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

                            Optional Rng As Range, _

                            Optional minRow As Long = 1, _

                            Optional sPassword As String)

        Dim bProtected As Boolean

        With SH

            If Rng Is Nothing Then

                Set Rng = .Cells

            End If

            bProtected = .ProtectContents = True

            If bProtected Then

                Application.ScreenUpdating = False

                .Unprotect Password:=sPassword

            End If

        End With

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

                           after:=Rng.Cells(1), _

                           Lookat:=xlPart, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows, _

                           SearchDirection:=xlPrevious, _

                           MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

        If bProtected Then

            SH.Protect Password:=sPassword, _

                       UserInterfaceOnly:=True

        End If

        Application.ScreenUpdating = True

    End Function

    '<<=========

    Nel modulo di codice della tua Userform, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub ComboBox1_Change()

        Dim r As Range

        Set r = Worksheets("Sheet2").Range("A:A").Find(ComboBox1)

        TextBox1.Text = r.Offset(, 1)

        TextBox2.Text = r.Offset(, 2)

        TextBox3.Text = r.Offset(, 3)

    End Sub

    '--------->>

    Private Sub UserForm_Initialize()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range

        Dim arrIn As Variant, arrNew() As Variant

        Dim sNomi As String

        Dim i As Long, j As Long, iCtr As Long

        Dim iCol As Long

        Dim UB As Long, UB2 As Long

        Const sFoglio As String = "Sheet2"          '<<=== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            LRow = LastRow(SH, .Columns("A:A"), 3)

            Set Rng = .Range("A3:" & sColonna_Di_Appoggio & LRow)

        End With

        arrIn = Rng.Resize.Value

        UB = UBound(arrIn)

        UB2 = UBound(arrIn, 2)

        For i = LBound(arrIn) To UB

            If arrIn(i, UB2) = sParola_Chiave Then

                iCtr = iCtr + 1

                ReDim Preserve arrNew(1 To iCtr)

                arrNew(iCtr) = arrIn(i, 3)

                Rng.Cells(i, UB2).ClearContents

            End If

        Next i

        ComboBox1.RowSource = Rng.Address(External:=True)

        If CBool(iCtr) Then

            sNomi = Join(arrNew, vbNewLine)

            Call MsgBox( _

                 Prompt:="I seguenti nomi sono stati aggiunti:" _

                         & vbNewLine & vbNewLine _

                         & sNomi, Buttons:=vbInformation, _

                 Title:="REPORT")

        End If

    End Sub

    '<<=========

    Potresti scaricare il mio file di prova Sol20190629.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-06-29T18:34:49+00:00

    Ciao Sol39,

    Funziona alla grande!

    Grazie mille di cuore.... è proprio quello che cerco!

    Ancora grazie e buon weekend :)

    Mi fa piacere! :-)

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-06-29T15:59:56+00:00

    Funziona alla grande!

    Grazie mille di cuore.... è proprio quello che cerco!

    Ancora grazie e buon weekend :)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-06-29T10:57:15+00:00

    Ciao e grazie per aver risposto..

    Qui trovi il link al file: https://we.tl/t-zb5QVlgWnD

    Grazie mille.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-06-29T10:25:16+00:00

    Ciao Sol39,

    in Sheet2 ho un database (da C3 a C39 ci sono i nomi, quello che interessa), in A ci stanno i numeri identificativi, in B la specializzazione, in D le email.

    In Sheet1 ho un pulsante che se cliccato mi apre l'userform.

    Nell'userform ho una combobox i cui ho caricato i dati e delle textbox in cui mi carica i dati relativi al valore scelto.

    Io vorrei che se aggiungo dei dati (prima di aprire l'userform) nel momento in cui apro l'userform mi esca un message box che dice "sono stati aggiunti nome".

    Esempio: apro la cartella, mi posiziono in Sheet2, in C40 aggiungo "Pinco Pallino", mi sposto in Sheet1, apro l'userform, esce il message box "è stato aggiunto Pinco Pallino".

    Sarebbe possibile fare ciò?

    Vari approcci mi vengono in mente ma ti chiederei gentilmente di caricare un file di esempio, dopo averlo depurato di dati sensibili, su un servizio di condivisione di file, ad esempio Microsoft OneDrive o DropBox, e postare un link al file in una risposta qui.

    Per caricare il file su DropBox, vedi:

    Come faccio a condividere file e cartelle in Dropbox?    

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento