Spúšťanie procedúr medzi 2 zošitmi a vyladenie kódu (VBA) – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spúšťanie procedúr medzi 2 zošitmi a vyladenie kódu (VBA) – Visual Basic – Fórum – Programujte.comSpúšťanie procedúr medzi 2 zošitmi a vyladenie kódu (VBA) – Visual Basic – Fórum – Programujte.com

 

11. 4. 2007   #1
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Smell the flowers while you can...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

Změna procedur — založil Ivos

Zoznam ulozenych procedur — založil Anonym

Auto-spustanie hry — založil marioff

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý