Znam da se programiranje u Ekselu ne može nazvati pravim programiranjem, ali može biti itekako upotrebljivo i zabavno. Evo jednog od kodova koji radi posao u mojoj firmi (još da mi adekvatno plaćaju za ovakve stvari... :) ). Kod se nalazi unutar Visual Basic forme koja deluje kao progress bar da se operater-korisnik ne bi ostavio na "čekanju". Nakon odrađenog posla, korisniku se pojavljuje random definicija sa Vukajlije.... :)
Option Explicit
Private Sub TextBox1_Change()
End Sub
Private Sub UserForm_Activate()
Application.Cursor = xlWait
ProgressBar.MousePointer = fmMousePointerHourGlass
DoEvents
Call PokreniProgressBar
Application.Cursor = xlDefault
Unload Me
End Sub
Private Sub UserForm_Initialize()
Call FormatUserForm(Me.Caption)
TextBox2.Left = TextBox1.Left
TextBox2.Top = TextBox1.Top + 3
TextBox2.Width = 0
End Sub
Sub PokreniProgressBar()
Dim sifra As String
sifra = InputBox("Unesi šifru:", "Za pokretanje brze kategorizacije morate uneti šifru")
If sifra = "lol" Then
On Error Resume Next
Dim mediji(100000) As String
Dim podaci(600000) As String
Dim i As Double
Dim j As Double
Dim n As Double
Dim m As Double
Dim brMedija As Integer
n = 1
m = 1
Dim proc As Variant
Dim s As Integer
Dim aktivniWorkbook As String
aktivniWorkbook = ActiveWorkbook.Name
Workbooks.Open FileName:="\\BOB\zajednichki\pomoćni\BAZA MEDIJA.xls"
Workbooks(aktivniWorkbook).Activate
Application.ScreenUpdating = True
Do While Workbooks("BAZA MEDIJA.xls").Worksheets("lista medija").Cells(n, 1) <> ""
mediji(n) = Workbooks("BAZA MEDIJA.xls").Worksheets("lista medija").Cells(n, 1)
n = n + 1
Loop
ActiveSheet.Cells(1, 4) = "Naziv medija"
ActiveSheet.Cells(1, 3) = "Kategorija medija"
ActiveSheet.Cells(1, 2) = "Vrsta medija"
Do While ActiveSheet.Cells(m, 4) <> ""
podaci(m) = ActiveSheet.Cells(m, 4)
m = m + 1
Loop
i = 1
j = 1
brMedija = n - 1
proc = brMedija / 100
For i = 1 To n - 1
If (i proc / brMedija) 100 > proc * s Then
s = s + 1
ProgressBar.TextBox2.Width = s * 2
'Else
'ProgressBar.TextBox2.Width = ProgressBar.TextBox2.Width
End If
For j = 1 To m - 1
If mediji(i) = podaci(j) Then
ActiveSheet.Cells(j, 3) = Workbooks("BAZA MEDIJA.xls").Worksheets("lista medija").Cells(i, 2)
ActiveSheet.Cells(j, 2) = Workbooks("BAZA MEDIJA.xls").Worksheets("lista medija").Cells(i, 5)
'ProgressBar.Label2.Caption = "Izračunavam sve podatke: " & " of " & i
DoEvents
ProgressBar.TextBox2.Width = s * 2
ProgressBar.Label1.Caption = "Obrađeno : " & s & " %"
End If
Next j
Next i
Unload Me
Dim p As Integer
p = Workbooks("SPAS.xls").Worksheets("Rand_Def_Vukajlija").Cells(1, 8)
MsgBox Workbooks("SPAS.xls").Worksheets("Rand_Def_Vukajlija").Cells((Int((p * Rnd) + 1)), 1)
Else:
MsgBox "Šifra koju ste uneli nije tačna. Žao mi je, pokušajte ponovo!"
Exit Sub
Unload Me
End If
End Sub