Pojmenování buňky   otázka

VB6/VBA

Zdravím. Chtěl bych požádot o pomoc s vytvořením makra, které by mi v dané oblasti buněk přiřadilo každé buňce název složený z názvu sloupce a řádku té každé buňky, ať nemusím otrocky vpisovat pojmenování pro každou buňku ručně.

Přiznávám, že jsem v této oblasti úplná lama, ale snad jen dočasně ;-)

upřímně díky. Filda

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Pojmenovat buňku A1 jako A1 nejde. Možností je třeba "_A_1" nebo "sloupec_A_radek_1". I když nechápu, proč to dělat a co to přinese, zkusil jsem tohle řešení

Sub pojmenuj()

Dim oblast As Range
Dim rZacatek, rKonec, sZacatek, sKonec As Integer ' pro oblast
Dim zacatek, konec As Integer ' pro zjištění názvu sloupce
Dim adresa As String

Set oblast = Selection 
rZacatek = oblast.Range("A1").Row
rKonec = oblast.Rows.Count + rZacatek - 1
sZacatek = oblast.Range("A1").Column
sKonec = oblast.Columns.Count + sZacatek - 1

For i = rZacatek To rKonec
    For j = sZacatek To sKonec
    adresa = Cells(i, j).Address
    konec = InStrRev(adresa, "$")
    pismeno = Mid(adresa, 2, konec - 2)
    ActiveWorkbook.Names.Add Name:="_" & pismeno & "_" & i, RefersToR1C1:="=List1!R" & i & "C" & j
   
   Next
Next

Set oblast = Nothing

End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky, přesně něco takového jsem měl na mysli. Jen to ještě dovést k dokonalosti tak aby si to načetlo text z buňky v řádku nad výběrem a text z buňky ve sloupci nalevo od výběru, oba řetězce spojilo a to by pak tvořilo jméno buňky.

díky, díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě abych osvětlil důvod pojmenování buněk: na serveru mám xls soubor s hodnotama, se kterýma pak pracujeme na jednotlivých PC. soubor na serveru se musí aktualizovat a ve chvíli kdy by se tam přidaly nebo odebraly řádky resp. sloupce, tak pokud bych neodkazoval na pojmenovanou bunku, tak mi to ztratí propojení nebo bude odkazovat na jinou hodnotu než potřebuji.

Pojmenovává se to podle klíče složeného z textu ve sloupci a radku vedle a nad daným výběrem. Jednou a pak už si ta buňka nese svůj název ať už je kdekoliv na listu ;-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takhle?

Sub pojmenuj()

Dim oblast As Range
Dim rZacatek, rKonec, sZacatek, sKonec As Integer ' pro oblast
Dim adresa As String
Dim sText, rText As String

Set oblast = Selection
rZacatek = oblast.Range("A1").Row
rKonec = oblast.Rows.Count + rZacatek - 1
sZacatek = oblast.Range("A1").Column
sKonec = oblast.Columns.Count + sZacatek - 1

On Error GoTo vystraha

For i = rZacatek To rKonec
    For j = sZacatek To sKonec
    sText = Cells(rZacatek - 1, j).Value
    rText = Cells(i, sZacatek - 1).Value
   ' adresa = Cells(i, j).Address
    'konec = InStrRev(adresa, "$")
    'pismeno = Mid(adresa, 2, konec - 2)
    ActiveWorkbook.Names.Add Name:="_" & sText & "_" & rText, RefersToR1C1:="=List1!R" & i & "C" & j
 
   Next
Next

Set oblast = Nothing

vystraha:
If Err.Number <> 0 Then
MsgBox "oblast neobsahuje regulérní výrazy pro vytvoření názvů"
Exit Sub

End If

End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

BINGO! DÍKY!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě bych měl jednu prosbičku o udělátko, pokud by to šlo. Pracuji s excelem 2003 a narazil jsem na problém s délkou vzorce, protože když vypisuju více odkazů na pojmenovanou buňku v daném xls na serveru musím ji napsat celou cestou '\\Server1\...\.*.xls'!jmeno_bunky což mě omezuje a navíc při změně umístění či názvu souboru je to v pr*. Je možné nějak nastavit u podobného makra

Sub aktualizuj()
'
' aktualizuj Makro

    ActiveWorkbook.UpdateLink Name:= _
        "\\SERVER-\...\!Vzory_test.xls", Type:=xlExcelLinks
End Sub

aby se mě to zeptalo na cestu a název souboru ze kterého má číst a já tudiž nemusel do vzorců vpisovat celou cestu ale třeba jen jmeno_bunky. Ikdyž chápu, že musím nějak pvně do nově vytvořeného souboru načíst jména buněk na které chci ve vzorcích odkazovat.

F.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback