Mám 2 súbory - prvy.xls a druhy.xls
V prvom si vypočítavam hodnoty podľa istých vzorcov, to znamená - zadám istý údaj a na základe tohto údaju mi vypočíta jeho hodnotu. A to potom píšem ako sumár do druhého súboru (druhy.xls). Teraz by som si to chcel zautomatizovať tak, aby tie údaje a výsledná hodnota sa automaticky zapísali do toho druhého súboru. To znamená potrebujem z prvého súboru spustiť procedúru, ktorá sa nachádza v druhom. Skúšal som to zapísať takto:
Public Sub SpustenieVdruhom()
Application.Run "c:\VBA\druhy.xls!VpisovanieHodnot"
End Sub
Stále mi však vypisovalo, že sa nenašlo makro...
V tom druhom súbore je procedura VpisovanieHodnot naprogramovaná takto:
Sub VpisovanieHodnot()
Dim plocha As Integer
a = "C"
b = "E"
d = "F"
h = "G"
x = 14
NasaBunka = Worksheets("CP").Range(a + CStr(x)).Value
plocha = Workbooks("c:\VBA\prvy.xls").Worksheets("Zadaj").Range("C4").Value
Do While Not IsEmpty(NasaBunka)
x = x + 5
Loop
With Workbooks("c:\VBA\druhy.xls").Worksheets("CP")
.Range(a + CStr(x)).Value = Workbooks("c:\VBA\prvy.xls").Worksheets("Zadaj").Range("B2").Value
.Range(b + CStr(x)).Value = Workbooks("c:\VBA\prvy.xls").Worksheets("Zadaj").Range("C2").Value
.Range(d + CStr(x)).Text = "Výsledná hodnota"
End With
Select Case (plocha)
Case Is < 1
Worksheets("CP").Range(h + CStr(x)).Value = Workbooks("c:\VBA\prvy.xls").Worksheets("Zadaj").Range("C8").Value
Case Is > 1
Worksheets("CP").Range(h + CStr(x)).Value = Workbooks("c:\VBA\prvy.xls").Worksheets("Zadaj").Range("B8").Value
End Select
End Sub
K tomu kódu:
1. Musel som vyriešiť problém s tým, že potrebujem, aby mi tie hodnoty z prvého zošita (prvy.xls) vpisovalo každý piaty riadok, riešil som to cyklom Do While (pretože hodnoty sa budú vkladať z viacerých procedúr, nielen z tejto)
2. Problém mi robí definovanie plochy - stále mi vypisuje Subscript Out of Range...
3. Plocha je definovaná kvôli tomu, pretože od nej závisí výsledná hodnota - menej ako 1 je iná ako viac ako 1.
Dúfam, že som to napísal polopate a ďakujem vám za pomoc