Jump to content

Excel, VBA: sagaidīt, kamēr ielīmēšana (Paste) pilnībā pabeidzas


itanium
 Share

Recommended Posts

Sveiki, biedri!
Varbūt kāds spēs palīdzēt.

Ir kalkulators, kas, balstoties uz ievades vērtībām (Range("inputCalc")) aprēķina rezultātu (Range("outputCalc")). Nepieciešams vienā piegājienā, izmantojot šo kalkulatoru, aprēķināt 3 dažādus scenārijus:

  • inputScenario1 -> inputCalc  -> outputCalc -> outputScenario1
  • inputScenario2 -> inputCalc -> outputCalc -> outputScenario2
  • inputScenario2 -> inputCalc -> outputCalc -> outputScenario3

 

Tad nu For loopā katram scenārijam:

  1. Scenārija ievades vērtības tiek iekopētas kalkulatorā
  2. Kalkulators aprēķina rezultātu šim scenārijam
  3. Rezultāts tiek iekopēts scenārija rezultātā

 

Kods:

 

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
	For i = 1 To 3

		Range("inputScenario" & i).Copy
		Range("inputCalc").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
			:=False, Transpose:=False
		
		
		Application.Calculate
		If Not Application.CalculationState = xlDone Then
			DoEvents
		End If
		
		Range("outputCalc").Copy
		Range("outputScenario" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
			:=False, Transpose:=False
	
	
	Next i
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True

 

Problēma šajā koda daļā:

Range("inputScenario" & i).Copy
Range("inputCalc").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
	:=False, Transpose:=False

Šī daļa ne vienmēr nostrādā un Application.Calculate izpildās uz vecajām inputCalc vērtībām. 

Izsaucot kodu otro reizi, parasti aprēķini nostrādā kā vajag.

 

Googlē uz ātro neatradu, bet varbūt ir kāds veids kā pagaidīt, kamēr vērtības ir iekopējušas?

 

 

 

 

Labots - itanium
Link to comment
Share on other sites

Un vajadzēja tikai pačīkstēt, lai atrastu problēmu :D

Problēma nebija kodā, bet gan pašā lapā un šūnu referencēs.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...