Excel VBA: Képlet cellába írása (képletben egy változóval)

Excel VBA: Képlet cellába írása (képletben egy változóval)
2020-04-07T16:52:00+02:00
2020-04-07T23:10:47+02:00
2022-10-15T21:26:18+02:00
NyariG
Sziasztok,

Szeretnék vba-val egy képletet beszúrni cellákba. Ezzel nincs is gond ha fixen megadom az excelt amit használjon.

De ezt az excelt nem adhatom meg fixre mert ez változó!

Viszont nem tudom kicserélni változóra, hogy kellene ezt megtenni?

Dim Arlista1 As String Arlista1 = Worksheets("Beállítások").Cells(3, 3).Value ' Árlista helyének beolvasása "e:\Gergo\Gabor\viszont0321.xls" With Worksheets("Bevásárló Lista").Range("E2:E" & Worksheets("Bevásárló Lista").Cells(Rows.Count, "D").End(xlUp).Row) .FormulaR1C1 = "=VLOOKUP(RC[-2],[viszont0321.xls]Tabelle1!R1C1:R10000C13,3,FALSE)" End With
Tehát mit irjak a "[viszont0321.xls]Tabelle1" helyére hogy az user által a C3 -as cellába irt excellel dolgozzon?


+1 kérdés: Ha futtatom a makrot utánna mindig vissza kell állítanom a Excelt arra hogy az oszlopokat betükkel jelölje és ne számokkal. Mért lehet ez? Ill hogy lehet ezt vba-val visszaváltani?

Segítségeteket elöre is köszönöm!
Mutasd a teljes hozzászólást!
Szia!
Próbáld így:

FormulaR1C1 = "=VLOOKUP(RC[-2],'" & Worksheets("Beállítások").Range("C3").Value & "'!R1C1:R10000C13,3,FALSE)"
Mivel az ilyen neveknél aposztrófok (') közé kell tenni a felkiáltójel előtti részeket. 

Üdv.
Mutasd a teljes hozzászólást!

  • Szia!
    A változó előtt  a szöveget idézőjelekkel be kell zárnod, & jellel hozzáfűzöd a változó értékét majd ismét & és nyitó idézőjellel a maradék rész.

    With Worksheets("Bevásárló Lista").Range("E2:E" & Worksheets("Bevásárló Lista").Cells(Rows.Count, "D").End(xlUp).Row) .FormulaR1C1 = "=VLOOKUP(RC[-2]," & Range("C3").Value & "Tabelle1!R1C1:R10000C13,3,FALSE)"
    Arra figyelj, hogy a cellában levő fájlnév feleljen meg a címzési formátumnak (szögletes zárójelek, esetleg ' (aposztróf) a több részből álló neveknél. Ha a cellában nincs benne, akkor neked kell hozzátenned az idézőjelek közé a megfelelő helyre.
    A bónuszkérdésre a válasz:
    Application.ReferenceStyle=xlA1

    Üdv.
    Mutasd a teljes hozzászólást!
  • Köszi a gyors választ.

    ezt csináltam:

    With Worksheets("Bevásárló Lista").Range("E2:E" & Worksheets("Bevásárló Lista").Cells(Rows.Count, "D").End(xlUp).Row) .FormulaR1C1 = "=VLOOKUP(RC[-2]," & Worksheets("Beállítások").Range("C3").Value & "Worksheets(1)!R1C1:R10000C13,3,FALSE)" End With
    Viszont ez nem megy, nem ír igy be semmit nem hogy képletet! De még hibát sem dob sajnos!

    CSatokok egy képet is hogy néz ki a cella amire hivatkozunk:
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Szia!

    A Worksheets(1) nem értelmezhető a képlet számára. Oda konkrétan be kell írni a munkalap nevét, úgy ahogyan az előző példádban volt.

    Üdv.
    Mutasd a teljes hozzászólást!
  • Hú az baj, mert ez mindig más!
    Mutasd a teljes hozzászólást!
  • Szia!
    Azt nem lehet beírni a C3 cellába a fájl nevéhez?
    Mindig ennek a fájlnak az első munkalapja kell?
    Üdv.
    Mutasd a teljes hozzászólást!
  • Igen, mindig az elsö kell.
    Igazából belehet irni a C3 ba is.

    Oda viszont eddig ezzel iratattam be:

    Sub OeffneDatei1() Dim varDatei As Variant varDatei = Application.GetOpenFilename() If varDatei = False Then Else Worksheets("Beállítások").Cells(3, 3).Value = varDatei End If End Sub
    Nem tudom az elsö munkalapot mivel tudnám kiolvastatni :)
    Mutasd a teljes hozzászólást!
  • Szia!
    Mai legjobb tudásom szerint azt csak a fájl megnyitása után tudod kiolvasni VBA-ból
    (Worksheets(1).Name).
    Azt nem lehet elérni, hogy mindig ugyanaz legyen az információt tartalmazó munkalap neve?
    Üdv.
    Mutasd a teljes hozzászólást!
  • Végülis, elöirhtaom hogy mi legyen, ez nem gond.

    A gond még mindig az alapprobléma, mit hogy kell beirnim die:

    FormulaR1C1 = "=VLOOKUP(RC[-2]," & Worksheets("Beállítások").Range("C3").Value & "!R1C1:R10000C13,3,FALSE)"
    hogy jó legyen, ez jelenleg nem müködik:

    a c3 value="E:\Gergo\Gabor\[arjegyzek2.xlsx]Tabelle1"
    Mutasd a teljes hozzászólást!
  • Szia!
    Próbáld így:

    FormulaR1C1 = "=VLOOKUP(RC[-2],'" & Worksheets("Beállítások").Range("C3").Value & "'!R1C1:R10000C13,3,FALSE)"
    Mivel az ilyen neveknél aposztrófok (') közé kell tenni a felkiáltójel előtti részeket. 

    Üdv.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd