Rozdílnost ovládacích prvků

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

LovelyTank2
nováček
Příspěvky: 10
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Rozdílnost ovládacích prvků

Příspěvekod LovelyTank2 » 25 čer 2012 19:36

Zdravím,

po delší době jsem opět začal něco tvořit ve VBA a čím víc toho vím, tím víc se mi zdá, že mi chybí úplné základy...
Teď momentálně řeším v čem jsou rozdílné ovládací prvky. Mám na mysli: Ovládací prvky formuláře a Ovládací prvky ActiveX. Popřípadě ještě proč nevyužít UserForm přímo ve VBA?

Další (navazující) problém je, že vlastně nevím jak s takovým listboxem (activeX) pracovat, páč jsem přišel na to, že pokud je v sheetu 1 tak se na něj nemůžu odkazovat z Modulu.

Tady je kód co mám v Sheetu1 (kde mám Listbox ActiveX)

Kód: Vybrat vše

Sub Folder_Selection()

Dim folder As FileDialog
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
        folder.Title = "Select a Folder"
        folder.AllowMultiSelect = False
        folder.Show


ChDir (folder.SelectedItems(1))
Allfiles = Dir("*.*")
ListBox1.Clear

Do While Allfiles  <> ""
ListBox1.AddItem Allfiles
Allfiles  = Dir
Loop


Set folder = Nothing
End Sub


a poté tam mám tento kód:

Kód: Vybrat vše

ub Merge()
Dim x As Long, wb As Workbook
Dim i As Long


 With ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                msg = msg & .List(i) & vbNewLine
            End If
        Next
    End With

If msg = vbNullString Then
         
        MsgBox "Nothing was selected!  Please make a selection!"
        Exit Sub
    Else
         
        Check = MsgBox("You selected:" & vbNewLine & msg & vbNewLine & _
        "Do you really want merge these files?", _
        vbYesNo + vbInformation, "Please confirm")
End If
     
If Check = vbYes Then

        With ListBox1

        Application.DisplayAlerts = False
        For x = 0 To .ListCount - 1
            If .Selected(x) = True Then
                Set wb = Workbooks.Open(FilePath & .List(x), UpdateLinks:=3)
                Call Merge2
        End If
        Next x
       
        End With
 
 
    Else
         
        For i = 0 To ListBox1.ListCount - 1
            ListBox1.Selected(i) = False
        Next
    End If

End Sub


Jak si můžete všimnout mám tam volání na funkci Merge2, protože mi z nějákého důvodu nefungovala přímo v těle této funkce.
Ten Call Merge2 odkazuje na Module1 kde je tento kód:

Kód: Vybrat vše

Sub Merge2()

Dim wsSheet As Worksheet



On Error Resume Next
Set wsSheet = Sheets("Cleansed Output review")
On Error GoTo 0
If Not wsSheet Is Nothing Then

    Sheets("Cleansed Output review").Select
    With Range("A1:BZ20")
    Set Foundcell = .Cells.Find(what:="CCOMP", _
                                after:=.Cells(.Cells.Count), _
                                LookIn:=xlFormulas, _
                                Lookat:=xlPart, _
                                searchorder:=xlByRows, _
                                searchdirection:=xlNext, _
                                MatchCase:=False)
    End With
   
   
    If Foundcell Is Nothing Then
        MsgBox "Not found and there should be a ..."
        Exit Sub


Tady nastává problém, protože místo msgboxu bych chtěl vypsat do nového listboxu jméno toho souboru, ve kterém není to hledané slovo. Jenže jak, když se tu nemůžu odkazovat na práci s listboxem, jinak dostávám chybu Object not defined....

Kód: Vybrat vše

    Else
       
    Foundcell.Offset(1, 0).Activate
 
   
   
    Range(Selection, Foundcell.End(xlToRight).Offset(1, 0)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    ActiveWorkbook.Close False
   
   
    Workbooks("Merging template.xlsm").Activate
    Sheets("Final").Select
    Range("A5").Select
    If Range("A5") = Empty Then
    ActiveSheet.Paste
   
   
   
    Else
   
    Dim LastRow As Long
    With ActiveSheet
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    Range("A" & LastRow + 1).Select
    End With
    ActiveSheet.Paste
    End If
       
       
    End If







Else


Msgbox "Whatever..."




End If



End Sub


Jestli je to zmateny tak se omlouvám, ale snažil jsem se :D
A taky předem díky za rady!

David

Reklama

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti