Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

Problema in Excel

- - - - -
  • Please log in to reply
4 replies to this topic

#1
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,835
  • Înscris: 01.11.2005
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
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,835
  • Înscris: 01.11.2005
...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
nexusm

nexusm

    Senior Member

  • Grup: Senior Members
  • Posts: 2,793
  • Înscris: 07.07.2011

View Posttehnics, on 08 decembrie 2013 - 10:17, said:

...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.)

cred ca este suficient
For iteratie = 10 To iteratie_maxima + 1


#4
tehnics

tehnics

    acolo unde vara-i zi la miezul noptii

  • Grup: Senior Members
  • Posts: 30,835
  • Înscris: 01.11.2005
...nu merge...crede-ma ca am incercat...si tot doar primele 2 le face.

#5
fanel1963

fanel1963

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 28.03.2004
http://www.itlearnin...264a8fba446a88c
incearca aici

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate