Problema in Excel
Last Updated: Jan 23 2014 19:51, Started by
tehnics
, Oct 26 2013 21:05
·
0

#1
Posted 26 October 2013 - 21:05

Salut,
Lucrez la un crearea unui cod in VBA pentru excel astfel incat in funtie de anumti markeri sa imi adauge sub randul selectat cu markeri informatii suplimentare. Problema ca imi lucreaza doar pentru 2 randuri la care exista markeri...apoi sare singur la End Sub...si gata...nu mai continua ( asta se vede clar cu F8 - Step in code )...de exemplu pentru textul marcat cu rosu din atasament, nu imi adauga nimic...doar pentru primele 2 randuri gasite.. Am atasat si fisieul excel ( este arhivat pentru a putea fi atasat )cu codul...poate cineva stie de ce oare nu vrea sa continue codul pana la sfarsit. Codul este urmatoru: Option Explicit Dim SFI As String 'numele SFI-ului Dim Left_SFI As String 'primele 8 caractere din stanga SFI-ului Dim End_SFI As Integer 'numarul din coada SFI-ului Dim iteratie As Integer 'iteratia curenta Dim iteratie_maxima As Integer 'numarul maxim de iteratii minus 10 Dim rand As String 'numarul randului la care s-a gasit markerul X Dim nr_insertii As Integer 'numarul documente suplimentare pentru fiecare SFI in parte si este egal cu lungimea markerului din coloana 1 Dim insertia_curenta As Integer 'iteratia curenta din numarul maxim de insertii Dim insertia_curenta1 As String 'caracterul selectat la momentul insertiei curente din markerul insertia curenta2 Dim insertia_curenta2 As String 'markerii selectati pentru insertie Dim title1 As String 'textul din coloana Title1 + informatia aditionala in functie de marker Private Sub cmdCreate_Click() iteratie_maxima = 10 Do Until Worksheets("Foaie1").Cells(iteratie_maxima, 2).Text = "" iteratie_maxima = iteratie_maxima + 1 Loop lblMAX.Caption = "Maximum numbers of items are: " & iteratie_maxima - 10 For iteratie = 10 To iteratie_maxima End_SFI = 101 nr_insertii = Len(Worksheets("Foaie1").Cells(iteratie, 1).Text) If nr_insertii = 0 Then GoTo aici End If insertia_curenta2 = Worksheets("Foaie1").Cells(iteratie, 1).Text SFI = Worksheets("Foaie1").Cells(iteratie, 2).Text Left_SFI = Left(SFI, 8) rand = iteratie + 1 & ":" & iteratie + 1 For insertia_curenta = 1 To nr_insertii insertia_curenta1 = Mid(insertia_curenta2, insertia_curenta, 1) Rows(rand).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Worksheets("Foaie1").Cells(iteratie + 1, 2).Value = Left_SFI & Str(End_SFI) Worksheets("Foaie1").Cells(iteratie + 1, 2).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent3 .TintAndShade = 0.599993896298105 .PatternTintAndShade = 0 End With If insertia_curenta1 = "1" Then title1 = "Dimension + Service space " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "2" Then title1 = "Footprint + Weight " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "3" Then title1 = "P&ID Manual " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "4" Then title1 = "Technical specification " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "5" Then title1 = "Cooling manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "6" Then title1 = "Lub. oil manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "7" Then title1 = "Fuel oil manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "8" Then title1 = "Exhaust manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "9" Then title1 = "Dimension + Service space " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "A" Then title1 = "Electric manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "B" Then title1 = "Hydr. manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If If insertia_curenta1 = "C" Then title1 = "HVAC manual + schematic " & Worksheets("Foaie1").Cells(iteratie, 3).Text End If Worksheets("Foaie1").Cells(iteratie + 1, 3).Value = title1 Worksheets("Foaie1").Cells(iteratie + 1, 3).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent3 .TintAndShade = 0.599993896298105 .PatternTintAndShade = 0 End With insertia_curenta1 = "" End_SFI = End_SFI + 1 Next iteratie = iteratie + nr_insertii iteratie_maxima = iteratie_maxima + nr_insertii lblMAX.Caption = "Maximum numbers of items are: " & iteratie_maxima - 10 aici: Next iteratie End Sub Attached Files |
#2
Posted 08 December 2013 - 10:17

...vad ca nu am primit nici un raspuns...intre timp am rezolvat problema care este destul de ciudata, as spune eu. Am schimbat comanda:
For iteratie = 10 To iteratie_maxima cu For iteratie = 10 To 5000( oricum niciodata nu voi avea mai mult de 5000 de randuri.) Nu imi explic de ce se intampla asta, pentru ca intotdeauna, iteratie_maxima era mai mare ca iteratie. ...asta a fost rezolvarea care am gasit-o eu Edited by tehnics, 08 December 2013 - 10:17. |
#3
Posted 18 December 2013 - 18:28

#4
Posted 24 December 2013 - 11:04

...nu merge...crede-ma ca am incercat...si tot doar primele 2 le face.
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users