vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest piątek, 20 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
Porada 29 czerwca 2012
CommonControls - 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 = Nothing
Set 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 Profiler

zamieś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 2012
Wyraż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 2012
Ikony 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




<-wstecz  1 2 3 4 5 6 7 8 9 10  dalej->
wszystkich stron: 13