< návrat zpět

MS Excel


Téma: Adresování buňky VBA rss

Zaslal/a 13.5.2015 9:42

Zdravím,
jak ve VBA adresovat zápis do buňky s použitím proměnné?

proměnné
prvnicislo = Range("H5").Value
sloupecjc = Range("H3").Value

do buňky třeba D4 by měl být zapsán vzorec s podmínkami
Cells(4,4).Select
ActiveCell.FormulaR1C1 = "=IF(R[prvnicislo+5],C[sloupecjc-5]="""","""",IF.........

Díky za radu.

Zaslat odpověď >

Strana:  « předchozí  1 2 3
#025530
avatar
Promiň, ale snažíš se aby to pouze napsalo co chci,.....

No ja sa teda snažím pomôcť zadávateľom, teda píšem to čo chcú.
Asi by bolo blbé písať to, čo nikto nechce.
Ale to musí byť z otázky jasné, a v tomto prípade to tak nevidím.citovat
#025533
avatar
Prípadne si zmeň noráciu z A1 na R1C1. Potom uvidíš presne ako má vyzerať výsledný vzorec v bunke. A presne takýto reťazec musíš zadať do toho tvojho makra. Excel vnútorne pracuje práve s takýmto formátom.citovat
#025534
avatar
Tak takhle vypadá makro, která dělá co přesně chci, okľuka bola najlepšia :

Sub zkouskamakra()

hoa = 5

Cells(hoa, hoa).Select
Cells(hoa, hoa).Formula = "=" & Cells(7 - hoa, 7 - hoa).Address(0, 1) & "+" & Cells(7 - hoa, 7 - hoa).Address(1, 0) & "*" & Cells(7 - hoa, 7 - hoa).Address(1, 1)

End Sub

Je to jen příklad, číslo 7 nahrazuje další proměnné. Šlo mi o to jak zapsat odkaz s dolarem a bez.
Proč to řeším makrem? Protože, vzorce které se vkládájí do určitých buněk v návaznosti na zadání proměnných - vlastně souřadnic vkládání jsou velmi dlouhé a obsahují několik větvených podmínek když, zaokrouhlování a další a nechceme se mi je furt vypisovat. Takhle to napíšu jednou do makra, uložím do sešitu osobních maker a je to vždy k dispozici.Zadám souřadnice vkládání a je to hned.

Díky za snahu.

Ještě možná jeden dotaz, nějakým příkazem jsem vypnul okýnko, které vyskočí po spuštění záznamu nového makra a je na něm tlačítko "zastavit záznam". Nevím jak to dostat zpátky, aby vyskočilo.citovat
#025535
elninoslov
Sub ZapisVzorec()
Dim sB As Integer, rB As Long, sV As Integer, rV As Long
sB = 5 'stĺpec bunky kam chceme zapísať nový vzorec - E5
rB = 5 'riadok bunky kam chceme zapísať nový vzorec - E5
sV = 2 'stĺpec bunky, ktorá je počítaná v novom vzorci - B2
rV = 2 'riadok bunky, ktorá je počítaná v novom vzorci - B2
Cells(rB, sB).FormulaR1C1 = "=R" & rV & "C[" & sV - sB & "]+R[" & rV - rB & "]C" & sV & "*R" & rV & "C" & sV
End Sub

V skratke, ak chcete $ (absolútne) nedávate [ ], ak chcete bez dolára (relatívne) musíte zadať [ ], a v nich je treba číslo ktoré počíta posun hodnoty riadku/stĺpca čo má vo vzorci byť, od hodnoty riadku/stĺpca tej bunky, do ktorej sa vzorec vkladá.

OT: Áno, Microsoft na zákazníkov nedbá, a ich želania (ak vôbec) prehodnocuje až po rokoch.citovat
#025536
avatar
@zac1234
A prečo si hneď nenapísal, že chceš v bunke mať
B2 =$E5+E$5*$E$5
C3 =$D4+D$4*$D$4
D4 =$C3+C$3*$C$3
E5 =$B2+B$2*$B$2
F6 =$A1+A$1*$A$1
G7 a tu ti to vyhodí chybu.

Tak to ten tvoj vzorec robí. Ale to sa asi pýtam zbytočne asi už piatykrát.citovat
#025537
avatar
@elnonoslov
ty si v krátkej dobe už druhý, čo toto od excelu vyžaduje. To by sa tým naozaj mali zaoberať.
Len mi chýba presnejší popis čo vlastne chcete. Nakoniec ak je to také jednoduché, tak sa dá urobiť vlastná funkcia UDF.

To že by to nabúralo celú doterajšiu koncepciu excelu je nepodstatné. Excel totiž vnútorne využíva práve konvenciu R1C1. Pre nás menej prehľadnejšiu.citovat
#025538
elninoslov
@marjankaj
??? Teraz ide o čo ? O tú moju vetu, že je blbé, lebo treba myslieť na 2 veci ? Áno je to blbé, a uviedol som alternatívu na získanie relatívnej adresy, ktorá mi na pochopenie pripadá ľahšia (Address). To neznamená, že sa má prepracovávať výkonné jadro Excelu. Samozrejme, že si Excel interne neprekladá písmenká stĺpcov na čísla, ale pracuje rovno s číslami R1C1. To by boli vysoké "režijné náklady".

Ak má byť na to UDF, nieje problém, ale ak tých vzorcov bude veľa, tak to UDF neúmerne zaťaží, a preto to chce zadávateľ urobiť tak, že sa validné vzorce pripravia, a vložia naraz v jednej procedúre. To sú síce cca rovnaké režijné náklady ako UDF, ale následne sú už vzorce natívne počítané, a to je výhoda oproti UDF (pri veľkom množstve).

Nemienim sa tu baviť o MS. Na to sú iné Flame diskusie. Ja som to spomenul iba všeobecne, ako reakciu na Vás. To je celé. Ale ak chcete príklad, nech sa páči. Nechcete mi snáď povedať, že nemožnosť vytvoriť zoznam listov pomocou vzorca (napr. pomocou indexu), je ojedinelý problém... Ale Excel je výborný program, o tom žiadna diskusia. To nemôže nikto napadnúť. Väčšina problémov tak či onak, je spôsobená iba nedostatočnými vedomosťami.

Ak niečo nejako je alebo nieje, nikto s tým nič neurobíme, iba to môžeme akceptovať.

Teraz si počkáme na zac1234, či sa to bude dať teda takto riešiť.citovat
#025539
avatar
@elninoslov
Ťažko tu naraz diskutovať s odborníkom(A to ty si) a s amatérom. Ja som chcel od zac1234 dostať presný výraz ktorý potrebuje do bunky. Tak som sa snažil zostaviť ten reťazec(lebo ten vzorec je reťazec a s reťazcami sa narába podľa určitých pravidiel), teda skôr didakticky. No asi márne. Samozrejme, to čo si uviedol ty je "stráviteľnejšie". Ja naozaj netuším, či tam tie vzorce bude mať dva alebo 50000.(To asi budú citlivé údaje)
Ale ďalšia diskusia asi aj tak k ničomu nepovedie.

PS. To "blbé" som mylne predpokladal,že kritizuješ microsoft. Áno je naozaj blbé vytvárať vzorce takýmto spôsobom. Ja som to dal iba pre ilustráciu.citovat

Strana:  « předchozí  1 2 3

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje