Excel-VBA-Název listu omezit vložení na 31 znaků Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
Jan Pašek
Tvůrce článků
Level 6.5
Level 6.5
Příspěvky: 3701
Registrován: leden 06
Bydliště: Plzeň
Pohlaví: Muž
Stav:
Offline

Excel-VBA-Název listu omezit vložení na 31 znaků

Příspěvekod Jan Pašek » 14 čer 2012 21:48

Mám s vaší pomocí Následující makro:

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 
 'Následující sekvence mění název listu
 If Range("B3") = "" And Range("B4") = "" And ActiveSheet.Name <> "Prázdný protokol (" & Sheets.Count - 8 & ")" Then
     ActiveSheet.Name = "Prázdný protokol (" & Sheets.Count - 8 & ")"
 ElseIf Range("B3") <> "" And Range("B4") = "" And ActiveSheet.Name <> Range("B3") Then
     ActiveSheet.Name = Range("B3").Value
 ElseIf Range("B3") = "" And Range("B4") <> "" And ActiveSheet.Name <> Range("B4") Then
     ActiveSheet.Name = Range("B4").Value
 ElseIf Range("B3") <> "" And Range("B4") <> "" And ActiveSheet.Name = Range("B3") & "_" & Range("B4") Then
     ActiveSheet.Name = Range("B3") & "_" & Range("B4").Value
 End If
 
 'Následující sekvence čísluje protokol (Protokol č.X)
 If Range("H1") = "" And Range("C1") <> "" Then
    Range("C1").ClearContents
   ElseIf Range("C1") = "" And Range("H1") <> "" Then
    Range("C1").Value = "č. " & Sheets.Count - 6
 End If
 
 'Následující sekvence Maže proud a výkon pokud bylo zadáno více jak 240V a jmenované buňky nejsou prázdné
 If Range("R2") And Range("L5,M5") = "" And Range("K5") > 240 Then
    Range("R2") = "Nepravda"
 ElseIf Range("R2") And Range("K5,L5,M5") <> "" And Range("K5") > 240 Then
    Range("L5,M5").ClearContents
    Range("R2") = "Nepravda"
 ElseIf Range("R2") = "Nepravda" And Range("K5") < 241 And Range("K5") <> "" Then
    Range("R2") = "Pravda"
 ElseIf Range("R2") = "Nepravda" And Range("K5,L5,M5") = "" Then
    Range("R2") = "Pravda"
 End If
 
 'Následující sekvence Provádí výpočet proudu nebo příkonu pokud je napětí menší než 241V
 If Range("M5") <> "" And Range("K5") < 241 And Range("K5") <> "" And Range("L5") = "" Then
    Range("L5").Value = Range("M5") / Range("K5")
 ElseIf Range("L5") <> "" And Range("K5") < 241 And Range("K5") <> "" And Range("M5") = "" Then
    Range("M5").Value = Range("K5") * Range("L5")
 End If
End Sub


Potřeboval bych omezit počet znaků vkládaných do názvu listu na 31 aby název listu "nepřetékal" a makro nemohlo vyhlásit chybu. Bohužel VBA není DOS takže v tom plavu a nevím jak přesně napsat.
Zřejmě bych ke každé možnosti přidal podmínku která zjistí délku textu pokud je méně znaků než 32 Zapsat v nezměněné podobě. Pokud délka textu přesáhne 31 znaků zapsat od prvního znaku názvu listu povolených 31 znaků.

Předem dík za pomoc
Jendův rozcestník (Odkazy, které jsem měl dříve v podpisu najdete v mém rozcestníku.) Jendovy novinky - Co je pro Vás odemne nového Pokud potřebujete mermomocí vědět na čem páchám PC kriminalitu sestavy jsou v profilu.

Reklama
Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel-VBA-Název listu omezit vložení na 31 znaků

Příspěvekod Azuzula » 14 čer 2012 22:11

Mělo by stačit jen

Kód: Vybrat vše

ActiveSheet.Name = Mid(Range("B3") & "_" & Range("B4"), 1, 31)

Kdyby to náhodou nešlo, tak s kontrolou (to první mi funguje i s názvem kratším, takže následující snad nebude nutné)

Kód: Vybrat vše

If Len(Range("B3") + Range("B4")+1) =>31 then 'to +1 je za podtržítko v názvu
ActiveSheet.Name = Mid(Range("B3") & "_" & Range("B4"), 1, 31)
end if

přesnou funkci a syntaxi "Mid" a "Len" najdeš v nápovědě excelu, takže snad nemá smysl se o tom rozepisovat.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Uživatelský avatar
Jan Pašek
Tvůrce článků
Level 6.5
Level 6.5
Příspěvky: 3701
Registrován: leden 06
Bydliště: Plzeň
Pohlaví: Muž
Stav:
Offline

Re: Excel-VBA-Název listu omezit vložení na 31 znaků  Vyřešeno

Příspěvekod Jan Pašek » 04 črc 2012 10:11

Zde děkuji za pomoc napsáno upraveno a Vyřešeno.
Jendův rozcestník (Odkazy, které jsem měl dříve v podpisu najdete v mém rozcestníku.) Jendovy novinky - Co je pro Vás odemne nového Pokud potřebujete mermomocí vědět na čem páchám PC kriminalitu sestavy jsou v profilu.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4810
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12223
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    4725
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3344
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Excel 2016 - vzorec kombinace podmínek Příloha(y)
    od MK_Vs » 08 led 2025 17:56 » v Kancelářské balíky
    5
    4094
    od lubo. Zobrazit poslední příspěvek
    14 led 2025 00:51

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti