|  Porada 29 czerwca 2012CommonControls - ProgressBar, ListView, TreeView  - "Obiekt niedostępny na tym komputerze."
Po aktualizacji Windows z 13.04.2012 na niektórych komputerach, na których uruchamiane są napisane przeze mnie makra zaczęły się pojawiać komunikaty błędów "Obiekt niedostępny na tym komputerze."  
Makra tworzę na komputerze z Windows 7 64 bit, a opisany powyżej problem pojawia się na komputerach z Windows XP.
 
Rozwiązaniem może być dynamiczne tworzenie tych kontrolek w czasie pracy programu. 
Jeśli kontrolka ma być "widziana" z poziomu projektu to w zwykłym module należy umieścić deklaracje zmiennej, która będzie reprezentować kontrolkę w kodzie: 
ListView:
 Public LV As MSComctlLib.ListView 
TreeView:
 Public TV As MSComctlLib.TreeView 
ProgressBar:
 Public PG As MSComctlLib.ProgressBar 
Jeśli wystarczy "widzialność" na poziomie modułu formularza, to wówczas deklaracje należy wstawić na samej górze modułu formularza, a wyglądają one następująco:
 
ListView:
 Dim LV As MSComctlLib.ListView 
TreeView:
 Dim TV As MSComctlLib.TreeView 
ProgressBar:
 Dim PG As MSComctlLib.ProgressBar 
Następnie w procedurze UserForm_Activate() tworzymy te kontrolki i ustawiamy odpowiednie właściwości. 
ListView:
 Private Sub UserForm_Activate()
 Set LV = Me.Controls.Add("MSComctlLib.ListViewCtrl.2")
 
 With LV
 .Top = 10
 .Left = 6
 .Width = 100
 .Height = 100
 .BorderStyle = ccNone
 .View = lvwReport
 End With
 
 End Sub
 
TreeView:
 Private Sub UserForm_Activate()
 Set TV = Me.Controls.Add("MSComctlLib.Treectrl.2")
 With TV
 .Top = 10
 .Left = 126
 .Width = 100
 .Height = 100
 .Style = tvwTreelinesPictureText
 .Indentation = 16
 End With
 End Sub
 
ProgressBar:
 Private Sub UserForm_Activate()
 Set PG = Me.Controls.Add("MSComctlLib.ProgCtrl.2")
 
 With PG
 .Top = 130
 .Left = 6
 .Width = 220
 .Height = 15
 .Min = 0
 .Max = 100
 .Scrolling = ccScrollingSmooth
 End With
 
 End Sub
 
Przy zakończeniu programu należy oczywiście zwolnić pamięć:
 Set LV = NothingSet PG = Nothing
 Set TV = Nothing
 
Zapraszam do dyskusji:
http://www.makravba.pl/?go=forum&go2=zobacz&id_watek=2317&return=watek zamieścił: admin
 
 
 
  25 czerwca 2012 
 
 Dodałem dziś możliwość komentowania artykułów oraz makr.  Wykorzystałem do tego funkcję Facebooka.Zapraszam do komentowania i dyskusji!
 zamieścił: admin
 
 
 
  19 czerwca 2012 
 
 Nowe makro w dziale Inventor - Material Profilerzamieścił: Harry
 
 
 
  8 maja 2012 
 
 Nowy link w dziale linki .zamieścił: admin
 
 
 
  27 kwietnia 2012 
 
 Nowe makro w dziale Excel .zamieścił: admin
 
 
 
  5 marca 2012 
 
 Problem z wyświetlaniem listy wątków forum dyskusyjnego został rozwiązany.Był on związany z kwerendą liczącą ilość postów w danym wątku. Serwer MySQL naszego dostawcy nie był w stanie wykonać tej kwerendy, w związku z czym informacja o ilości postów w danym wątku została usunięta.
 zamieścił: admin
 
 
 
  Porada 10 lutego 2012Wyrażenia regularne.
Wyrażenia regularne mają znacznie większe możliwości niż operator Like . 
Użyć ich można nie tylko do sprawdzania poprawności danych, ale także do wyłuskiwania z tekstu podciągów spełniających określone założenia oraz do zamiany jednego ciągu na drugi.
 
Poniżej trzy przykłady ilustrujące te możliwości:
 Sub Regex_Przyklad_1()
'Sprawdzanie poprawności adresu mailowego
Dim  oRegex As Object
Dim  strText As String
Set  oRegex = CreateObject("VBScript.Regexp") 
strText = "admin@vbamania.pl "
'wzorzec e-maila 
oRegex.Pattern = "[a-z0-9_.-]+@[a-z0-9_.-]+\.\w{2,4}"
If  oRegex.Test(strText) Then  MsgBox "Adres prawidłowy - " & strText Else  MsgBox "Adres nieprawidłowy - " & strText
Set  oRegex = Nothing
End Sub Sub Regex_Przyklad_2()
 'wyłuskiwanie liczb z tekstu
 Dim oRegex As Object, oMatches As Object, oM As Object
 Dim strText As String, strKom As String, strP As String
 
 Set oRegex = CreateObject("VBScript.Regexp")
 strText = "Wyplata: 3500 PLN, ZUS: 1018 PLN, II filar: 190 PLN, III filar: 25 PLN"
 
 'tylko 4-cyfrowe liczby
 oRegex.Pattern = "(^|\D)\d{4}(\D|$)"
 'liczba cyfr od 2 do 3
 'oRegex.Pattern = "(^|\D)\d{2,3}(\D|$)"
 
 'wyszukuje wszystkie ciągi znaków spełniające warunek
 oRegex.Global = True
 
 'wyszukuje tylko pierwszy ciąg znaków spełniający warunek
 'oRegex.Global = false
 
 Set oMatches = oRegex.Execute(strText)
 
 If oMatches.Count > 0 Then
 For Each oM In oMatches
 If oM Is oMatches(oMatches.Count - 1) Then strP = "" Else strP = ", "
 strKom = strKom & oM.Value & strP
 Next oM
 strKom = "Dopasowania: " & strKom
 Else
 strKom = "Brak dopasowań"
 End If
 
 MsgBox strKom
 
 Set oRegex = Nothing
 Set oMatches = Nothing
 
 End Sub
 Sub Regex_Przyklad_3()
 'Zamiana jednego ciągu na inny
 Dim oRegex As Object
 Dim strText As String, strNewText As String
 Dim dblWynik As Double
 
 Set oRegex = CreateObject("VBScript.Regexp")
 strText = "Wynik wynosi: %d" & vbCrLf & _
 "Result is: %d"
 
 'wyszukuje wszystkie ciągi znaków spełniające warunek
 oRegex.Global = True
 
 'wyszukuje tylko pierwszy ciąg znaków spełniający warunek
 'oRegex.Global = False
 
 'wzorzec
 oRegex.Pattern = "%d"
 dblWynik = 10.244
 
 strNewText = oRegex.Replace(strText, dblWynik)
 
 MsgBox strNewText
 
 Set oRegex = Nothing
 
 End Sub
 zamieścił: admin
 
 
 
  Porada 9 lutego 2012Ikony w kolumnach ListView.
Wprowadziłem dziś nową funkcjonalność serwisu - porady.  
Oto pierwsza z nich:
 
Czy wiecie, że w kontrolce ListView  można umieszczać ikony w innych kolumnach, a nie tylko w pierwszej? 
Oto, jak to działa: 
Załóżmy, że mamy formularz z kontrolką ImageList . W niej umieszczone z kolei dwie ikony z dodanymi kluczami "icon1" oraz "icon2". 
Kontrolki tej potrzebujemy jako źródła ikon do ListView , z właściwością View  ustaloną na lvwReport .
 
Oto kod:
 Private Sub UserForm_Activate()
 Me.ListView1.SmallIcons = Me.ImageList1
 
 Dim oLi As ListItem
 Set oLi = Me.ListView1.ListItems.Add(, , "Kolumna nr 1", , "icon1")
 oLi.ListSubItems.Add , , "Kolumna nr 2", "icon2"
 
 Set oLi = Nothing
 
 End Sub
 zamieścił: admin
 
 
 
  1 listopada 2011 
 
 Witam ponownie po półtoramiesięcznej przerwie.Awaria serwisu była spowodowana atakiem wirusa. Mam nadzieję, że udało mi się pozbyć związanych z tym problemów i serwis będzie kontynuował swoją działalność.
 zamieścił: admin
 
 
 
  13 lutego 2011 
 
 W dziale Excel  nowa wersja makra BatchXLS. 
Ulepszenia w stosunku do poprzedniej wersji dotyczą interfejsu użytkownika.zamieścił: admin
 
 
 
 
 
  wszystkich stron: 13 
 |