Memperbaikai userform dan membuat cmb import data

  1. 4 tahun lalu
    Di sunting 4 tahun lalu oleh Ferryansyah

    Assalamu alaiukum ,
    Master Vba

    Mohon bantuannya,
    Masalah pertama,
    sya mempunyai kesulitan pada saat ingin membuat import data ke sheet fpp saya,
    cmb impor data [Contoh gambar 3]
    Sheet Fpp [contoh gambar 2]

    Masalah kedua
    Pada saat saya medouble klik di user form monitor klaim, input datanya tdk berfungsi, kusus yg s blok merah [gambar 1]

    Mohon bantuannya

    Berikut sya lampirkan file"coba 20 fix"

    @Ferryansyah ...

    ... sya mempunyai kesulitan pada saat ingin membuat import data ke sheet fpp saya ...

    Maksudnya impor data dari file eksternal ke sheet FPP? Coba tambahkan prosedur seperti berikut:

    Sub FFP_LoadData(FileName As String)
        Dim lX As Long, lY As Long
        Dim xlWB As Workbook
        Dim xArray
        
        If FileName = vbNullString Then Exit Sub
        
        On Error GoTo errHandler
        
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            .DisplayAlerts = False
        End With
        
        Set xlWB = Application.Workbooks.Open(FileName, False, True)
                
        With xlWB.Worksheets(1)
            lX = Sheet5.Range("B3:AR3").Columns.Count
            lY = .Range("A3:AQ3").Columns.Count
            If lX = lY Then
                lX = .Range("A" & Rows.Count).End(xlUp).Row
                xArray = .Range("A2:AQ" & lX).Value2
                lY = Sheet5.Range("B" & Rows.Count).End(xlUp).Row
                Sheet5.Range("B" & lY + 1 & ":AR" & (lX + lY - 1)).Value2 = xArray
            End If
        End With
        
    errHandler:
        If Err Then Err.Clear
        
        On Error Resume Next
        
        xlWB.Close False
        Set xlWB = Nothing
        
        Err.Clear: On Error GoTo 0
    
        With Application
            .DisplayAlerts = True
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    End Sub

    kemudian pada Event Procedure CommandButton2_Click() panggil prosedur di atas seperti berikut:

    Private Sub CommandButton2_Click()
        Dim s As String
        Dim lX As Long
    
        s = Application.GetOpenFilename
        Label20 = s
    
        If s <> "False" Then
            '+-- Impor data ke sheet FPP.
            Call FFP_LoadData(s)
    
            '+-- Update data ListBox FPP.
            lX = Sheet5.Range("B" & Rows.Count).End(xlUp).Row
            s = Sheet5.Range("$B$3:$AS$" & lX).Address(1, 1, xlA1, 1)
            ThisWorkbook.Names.Item("FPP").RefersTo = "=" & s
        End If
    End Sub

    ... Pada saat saya medouble klik di user form monitor klaim, input datanya tdk berfungsi, kusus yg s blok merah [gambar 1] ...

    Saya kurang paham maksudnya. Saya coba double click pada item yang mas maksud, form Input Data-nya muncul :

    [attachment:5dc8d7585a0e9]

    Demikian.

  2. Caton

    11 Nov 2019 Terverifikasi Jawaban Terpilih Indonesia + 20.101 Poin

    @Ferryansyah ...

    ... sya mempunyai kesulitan pada saat ingin membuat import data ke sheet fpp saya ...

    Maksudnya impor data dari file eksternal ke sheet FPP? Coba tambahkan prosedur seperti berikut:

    Sub FFP_LoadData(FileName As String)
        Dim lX As Long, lY As Long
        Dim xlWB As Workbook
        Dim xArray
        
        If FileName = vbNullString Then Exit Sub
        
        On Error GoTo errHandler
        
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            .DisplayAlerts = False
        End With
        
        Set xlWB = Application.Workbooks.Open(FileName, False, True)
                
        With xlWB.Worksheets(1)
            lX = Sheet5.Range("B3:AR3").Columns.Count
            lY = .Range("A3:AQ3").Columns.Count
            If lX = lY Then
                lX = .Range("A" & Rows.Count).End(xlUp).Row
                xArray = .Range("A2:AQ" & lX).Value2
                lY = Sheet5.Range("B" & Rows.Count).End(xlUp).Row
                Sheet5.Range("B" & lY + 1 & ":AR" & (lX + lY - 1)).Value2 = xArray
            End If
        End With
        
    errHandler:
        If Err Then Err.Clear
        
        On Error Resume Next
        
        xlWB.Close False
        Set xlWB = Nothing
        
        Err.Clear: On Error GoTo 0
    
        With Application
            .DisplayAlerts = True
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    End Sub

    kemudian pada Event Procedure CommandButton2_Click() panggil prosedur di atas seperti berikut:

    Private Sub CommandButton2_Click()
        Dim s As String
        Dim lX As Long
    
        s = Application.GetOpenFilename
        Label20 = s
    
        If s <> "False" Then
            '+-- Impor data ke sheet FPP.
            Call FFP_LoadData(s)
    
            '+-- Update data ListBox FPP.
            lX = Sheet5.Range("B" & Rows.Count).End(xlUp).Row
            s = Sheet5.Range("$B$3:$AS$" & lX).Address(1, 1, xlA1, 1)
            ThisWorkbook.Names.Item("FPP").RefersTo = "=" & s
        End If
    End Sub

    ... Pada saat saya medouble klik di user form monitor klaim, input datanya tdk berfungsi, kusus yg s blok merah [gambar 1] ...

    Saya kurang paham maksudnya. Saya coba double click pada item yang mas maksud, form Input Data-nya muncul :

    contoh.gif

    Demikian.

  3. Dear mas @Caton mksh mas
    Maaf baru lihat comentnya mas
    untuk yg prtama sya akan coba mas terlebih dahulu

    Untuk yg kedua, coba dklik di sample, fpp33, pas yang itu smpai kbawah, kalau mau diedit datanya tdk bsa terubah mas, malah data yg lain berubah

    Mohon bantuannya mas @Caton

  4. Caton

    12 Nov 2019 Terverifikasi Indonesia + 20.101 Poin

    @Yugosh ...

    Untuk yang pertama, terlampir contoh data eksternal yang saya gunakan untuk diimpor. Maaf, sebelumnya saya lupa melampirkannya. Silahkan disesuaikan tabulasi data yang akan diimpor bagaimana dan coba revisi kembali script yang kurang tepat.

    Untuk hal kedua, klo pake fungsi FIND, kemungkinan indeks data yang ditemukan akan tidak tepat. Contoh saja, jika data yang dicari adalah SAMPLE (sel L93), maka range yang akan dikembalikan bisa jadi adalah sel L8 karena nilainya juga mengandung kata SAMPLE...

    Kalau menurut saya, lebih baik gunakan indeks dari ListBox saja. Cara melewatkan nilai indeks ListBox bisa menggunakan prosedur khusus atau menggunakan properti dari UserForm target. Misalkan saja, pada UserForm FORMMENU ditambahkan script:

    Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo salah
    With FORMDO
        '+-- Tambahkan baris ini untuk menyimpan indeks
        '+-- ListBox ke FORMDO.
        .Tag = Me.ListBox2.ListIndex + 1
    
        .NP.Value = Me.ListBox2.Column(0)
        .nomor1.Value = Me.ListBox2.Column(2)
        .dana1.Value = Me.ListBox2.Column(3)
    End With
    FORMDO.Show
    Exit Sub
    salah:
    Call MsgBox("Klik Data Yang Tersedia", vbInformation, "Data Buku Bantu")
    End Sub

    dan pada UserForm FORMDO susun script sebagai berikut:

    Private Sub ubah1_Click()
        Dim lIdx As Long
    
        lIdx = CLng(Me.Tag)
        Sheet1.Cells(lIdx, "N") = Me.nomor1.Value
        Sheet1.Cells(lIdx, "O") = Me.dana1.Value
    
    Call MsgBox("Data Berhasil Di Ubah", vbInformation, "data Buku Bantu")
    Me.NP.Value = ""
    Me.nomor1.Value = ""
    Me.dana1.Value = ""
    
    Unload Me
    End Sub

    Demikian.

  5. Di sunting 4 tahun lalu oleh Ferryansyah

    @Caton
    Makasih banyak bantuanya Mas ,saya sudah masukan script FormDO yang mas saranin ,Alhamdulillah formnya berjalan lancar mas

    mas @Caton kalau CommandButton Import datanya saya mau simpan di userForm bagaman yah ?
    tadi saya coba tidak bisa mas,

    Berikut capturenya :

  6. Caton

    13 Nov 2019 Terverifikasi Indonesia + 20.101 Poin

    @Ferryansyah ...

    Kalau maksud mas @Ferryansyah data yang diloading akan dimuat langsung ke dalam ListBox, bisa saja menggunakan script sebelumnya dengan sedikit modifikasi, misalkan begini :

    Sub FFP_LoadData(FileName As String)
        Dim lX As Long, lY As Long
        Dim xlWB As Workbook
        Dim xArray
        
        If FileName = vbNullString Then Exit Sub
        
        On Error GoTo errHandler
        
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            .DisplayAlerts = False
        End With
        
        Set xlWB = Application.Workbooks.Open(FileName, False, True)
                
        With xlWB.Worksheets(1)
            lX = Sheet5.Range("B3:AR3").Columns.Count
            lY = .Range("A3:AQ3").Columns.Count
            If lX = lY Then
                lX = .Range("A" & Rows.Count).End(xlUp).Row
                xArray = .Range("A1:AQ" & lX).Value2
                If UBound(xArray) <> -1 Then
                    With ListBox3
                        .RowSource = vbNullString
                        .Clear
                        .List = xArray
                    End With
                End If
            End If
        End With
        
    errHandler:
        If Err Then Err.Clear
        
        On Error Resume Next
        
        xlWB.Close False
        Set xlWB = Nothing
        
        Err.Clear: On Error GoTo 0
    
        With Application
            .DisplayAlerts = True
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    End Sub

    Pada script di atas, properti ListBox3.RowSource harus dikosongkan dulu agar data yang diloading bisa ditampilkan pada kontrol ListBox3. Jika tidak, maka kontrol ListBox3 akan kembali membaca data dari sheet FPP.

    Demikian.

  7. @Caton

    makasih mas bantuannya & Ilmunya
    next time akan ada pertanyaan lagi mas hehehe

  8. dear mas @Caton

    Mohon Dibantu perbaikan Import data Di shet SIP tdk bisa mas

    mungkin cara aturan rangenya,gimana yah mas mohon bantuannya mas
    please,terlampir filenya

  9. Caton

    3 Des 2019 Terverifikasi Indonesia + 20.101 Poin

    @Ferryansyah ...

    Untuk impor data ekternal FPP dan SIP, prosesnya bisa menggunakan 1 prosedur yang sama, dengan perbedaan pada argumen yang digunakan. Pada file terlampir, saya contohkan dengan membuat prosedur Function LoadExternalData, yang dapat dimanfaatkan untuk mengimpor data ke sheet FPP maupun ke sheet SIP. Semoga sesuai.

    Demikian.

  10. @Caton saya akan coba bsk dkantor mas,drmh gak ad pc mas,Smoga sesuai mas @Caton

    Sblmnya sya ucapkan Mksh bnyak mas atas bantuannya

  11. Dear mas @Caton maaf s mau brtnya lagi mas
    S kesulitan mas, bgmanya cara menambahkan centang di input klaim jika terdapat ppn, jd scara otomatis jika s klik centangnya langsung otomatis mengurangi 10%

    File aplikasinya masih sma mas yg diatas
    Cmb input klaim yg berda di menu klaim promosi

  12. Caton

    7 Des 2019 Terverifikasi Indonesia + 20.101 Poin

    @Ferryansyah ...

    Terlampir perbaikannya pada FORMINPUT, semoga sesuai.

    Demikian.

  13. Dear Mas @Caton makasih banyak mas atas bantuanya & ilmunya
    semoga mas @Caton diberi kesehatan dan rezeki yang banyak dari Allah SWT .Amin

  14. Caton

    7 Des 2019 Terverifikasi Indonesia + 20.101 Poin

    @Ferryansyah ...

    Aamiin. Semoga demikian pula untuk mas @Ferryansyah ...

 

atau Mendaftar untuk ikut berdiskusi!