makravba.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 20 października 2019 roku.
Ustaw jako stronę startową Ulubione Napisz
7 marca 2016

Nowe makro w dziale Excel

zamieścił: admin




28 stycznia 2016

Nowy link w dziale Linki.

zamieścił: admin


Porada 29 maja 2015
Jak wykorzystywać wyrażenia regularne (Regex) w VBA:

Option Explicit

Function GetNumber(strText As Variant, sVariable As String) As Variant

Dim oRegex As Object, oMatches As Object, oM As Object
Dim vValue As Variant

Set oRegex = CreateObject("VBScript.Regexp")

'Wynajduje liczby oraz łańcuchy tekstowe przed którymi jest nazwa zmiennej i znak równości
oRegex.Pattern = "(" & sVariable & "=" & ")" & _
    "(\d+(?:[\.\,]\d+)?|$|\s)"

'wyszukuje wszystkie ciagi znaków spelniajace warunek
oRegex.Global = True

Set oMatches = oRegex.Execute(strText)

Select Case True
    Case oMatches.Count = 1
        If oMatches(0).submatches.Count = 2 Then
            vValue = oMatches(0).submatches(1)
        Else
            vValue = ""
        End If
        
        If IsNumeric(vValue) Then GetNumber = CDbl(vValue) Else GetNumber = vValue
        
    Case oMatches.Count = 0
        GetNumber = "[#NM]"
    Case oMatches.Count > 1
        GetNumber = "[#O]"
End Select

Set oRegex = Nothing
Set oMatches = Nothing

End Function


Powyższa funkcja zwraca wartość określonej zmiennej w podanym tekście.
Jeśli w tekście występuje ciąg "Wartość X=1050" to po wywołaniu tej funkcji otrzymamy liczbę 1050.

Przykład wywołania:

Sub PodajWartosc()

   MsgBox GetNumber("Wartość X=1050", "X")

End Sub


zamieścił: admin


Porada 10 grudnia 2013
Jak przerwać działanie makra (pętli) poprzez naciśnięcie klawisza ESC

Należy do tego użyć funkcji API.
Na poziomie modułu funkcję tę trzeba zadeklarować:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer


A potem:
Do Until GetAsyncKeyState(vbKeyEscape) <> 0
     '..... tutaj operacje w pętli
     DoEvents
Loop


zamieścił: admin


23 maja 2013

Nowy link w dziale Linki.

zamieścił: admin


20 maja 2013

Nowe makro w dziale Autocad.

zamieścił: admin


1 marca 2013

Z uwagi na sprawy prywatne nie byłem w stanie zajmować się stroną vbamania.pl.
Domena przepadła - nie udało mi się jej odzyskać, więc po dwu miesiącach nieobecności najlepsza polska strona poświęcona VBA powraca w nowym wcieleniu jako Makra.VBA.
Wszelkie Wasze loginy i hasła pozostały bez zmian. Przepraszam za nieobecność i mam nadzieję, że dalej będziecie odwiedzać nasz serwis.

zamieścił: admin


17 lipca 2012

Nowe makro w dziale AutoCAD.

Makro powstało jako odpowiedź na pytanie na niemieckim forum dyskusyjnym www.cad.de, dlatego też interfejs użytkownika jest w języku niemieckim.

zamieścił: admin


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




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