Sunteți pe pagina 1din 4

Salut!

Sint un foarte incepator in ale VBA-ului si din cauza asta am nevoie de ajutor in ceea ce priveste scrierea macrourilor pt Excel. Pt unii dintre voi probabil e "floare la ureche", eu "mi-am prins urechile".Nu stiu sa fac iteratia...Asa ca, imi trebuie codurile pt urmatoarele 2 probleme. 1) Se da o coloana (ex: A1:A100) cu valori cuprinse intre 1 si 20. Vreau ca macroul sa-mi coloreze valorile mai mari de 10 cu verde si cele mai mici de 10 cu albastru. 2) Se da o coloana de forma 1223355 releu 12554526 baterie 1548785 cablu Vreau sa imi puna (cu "cut") valorile "text" pe coloana urmatoare, in dreptul valorilor de deasupra, corespunzatoare. Sa apara astfel: 1223355 releu 12554526 baterie 1548785 cablu Precizez ca pt ambele proleme este vorba de rinduri de ordinul miilor, altfel le faceam manual.... Multumesc frumos pt intelegere. mihaicris 23rd November 2005, 13:15 macro1 pentru 1, macro2 pentru 2

Sub macro1() Dim i As Long For i = 1 To 100 'aici se inlocuieste 100 cu ultima linie, valorile se iau de pa coloana A If Cells(i, "A") > 10 Then Cells(i, "A").Font.Color = vbGreen ' asta are loc daca > 10 Else Cells(i, "A").Font.Color = vbBlue ' asta are loc daca < sau = 10 End If Application.StatusBar = i ' asta ca sa vezi ce se intampla Next End Sub

'____________________________________ Sub macro2() Dim i As Long, txtnou As String For i = 1 To 100 'aici se inlocuieste 100 cu ultima linie, valorile se iau de pa coloana A si se pun in B If IsNumeric(Cells(i, "A")) And Cells(i, "A") > 0 Then txtnou = Cells(i, "A") & " " & Cells(i + 1, "A") Cells(i, "A") = txtnou Cells(i + 1, "A") = "" txtnou = "" End If Application.StatusBar = i ' asta ca sa vezi ce se intampla Next
End Sub

http://forum.inginer-il.ro/index.php?showtopic=381
Pentru inceput, daca avem niste celule in care-s combinate litere si cifre (nume si marca) si vrem sa extragem doar literele putem sa folosim urmatorul cod VBA.

CODE Sub cleanum() s = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9") For Each r In Selection v = r.Value For i = 0 To 9 v = Replace(v, s(i), "") Next r.Value = v Next End Sub

Sa presupunem ca se doreste un fisier excel cu multe sheet-uri, fiecare sheet sa aiba un nume distinct (nume de produse, numele personalului, etc...) bineinteles treaba asta se poate face manual, prin copierea fisierelor si redenumirea lor, dar se mai poate face si automat.

- Creati-va "Template-ul", adica sheet-ul pe care-l doriti sa-l copiati de nenumarate ori, dupa ce ati terminat denumiti-l chiar "Template"

- in Sheet1, incepand cu celula A1 creati/copiati lista cu numele viitoarelor sheet-uri - in editorul VBA (ALT+F11) si in zona de cod a sheet-ului 1 inserati urmatorul cod:

CODE Private Sub CommandButton1_Click() On Error Resume Next Application.DisplayAlerts = False: Application.ScreenUpdating = False

Dim cell As Range, ra As Range, curr As Worksheet, sh As Worksheet Set curr = ActiveSheet Set ra = Range([A1], Range("A" & Rows.Count).End(xlUp)) For Each cell In ra.Cells Err.Clear: x = Worksheets(cell.Value).[A1] If Err.Number Then ' Debug.Print "sheet " & cell & " not found" Sheets("Template").Copy After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell Else ' Debug.Print "sheet " & cell & " already present" End If Next cell

curr.Activate Application.DisplayAlerts = True: Application.ScreenUpdating = True End Sub

Private Sub CommandButton2_Click() Application.DisplayAlerts = False: Application.ScreenUpdating = False Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets If sh.Name <> ActiveSheet.Name And sh.Name <> "Template" Then sh.Delete End If Next sh Application.DisplayAlerts = True: Application.ScreenUpdating = True End Sub - inserati doua butoane si atribuiti-le cele doua functii.

http://lec-academy.ro/inregistrarea-macro-urilor-automate/