Výsledky 1 až 7 z 7

Téma: VBA for Excel

  1. #1

    Standardní VBA for Excel

    Ahoj, snad mi niekto poradi:
    Na ulahcenie prace som si chcel naprogramovat makro (podotykam ze nie som programator ani netuzim nim byt a VBA sa venujem par dni), ktoreho cast je tu:



    Set NewSheet = Sheets.Add(Type:=xlWorksheet)
    ActiveSheet.Name = "supisharkov"
    npoc = Sheets.Count

    'urcenie harkov na vymaz
    For i = 1 To npoc
    ActiveSheet.Cells(i, 1).Value = Sheets(i).Name

    ActiveSheet.Cells(i, 2).Value = Left(ActiveSheet.Cells(i, 1), 6)

    Next i

    'mazanie harkov
    For i = 1 To npoc
    If ActiveSheet.Cells(i, 2).Value = "supkab" Then
    Sheets(ActiveSheet.Cells(i, 1).Value).Select
    ActiveWindow.SelectedSheets.Delete
    ActiveWorkbook.Sheets("supisharkov").Select
    End If
    Next i

    Sheets("supisharkov").Select
    ActiveWindow.SelectedSheets.Delete




    Malo by to fungovat takto: vytvoril by sa novy harok (list), spocital by sa pocet harkov v zosite. V novom harku by 1. cyklus vypisal do 1. stlpca mena vsetkych harkov. Druhy cyklus by na zaklade casti nazvu jednotlive nepotrebne harky mazal. Napokon by sa zmazal aj ten docasne vytvoreny pomocny harok "supisharkov". Chapem ze skusenejsim programatorom sa tento sposob moze zdat streleny a tazkopadny, ale kazdopadne to funguje v Exceli XP. Ale problem je v tom, ze v Exceli97 to zahlasi hned prvu chybu v 1. riadku (inac som ten riadok odkukal niekde z netu). Ak ho aj ignorujem (tu by som si este snad vedel pomoct), zahlasi sa dalsia chyba v 1. cykle pri funkcii left. S tym ale neviem pohnut: ved Excel97 tuto funkciu obsahuje, a dokonca aj v helpe je na to priklad... Co s tym pls
    1st PC: AMD Barton 2500(oc:3200 - 11x200), MSI nforce K7N2deltaL, MSI GF FX5600VTR-D 128MB, RAM 2x512MB 400MHz
    2nd PC: Intel Core2Duo 6300, MSI P965 NeoF, MSI GF 7600GS, RAM 2x1024MB 800MHz

  2. #2

    Standardní

    Tvé řešení opravdu není z nejúspornějších. Jestli chceš dosáhnout toho, aby se vymazaly listy, jejichž název začíná na "subkap", dá se to napsat třeba takhle:
    Kód:
    Public Sub Vymazat()
       Dim wksList As Worksheet
       
       For Each wksList In ActiveWorkbook.Worksheets
          If wksList.Name Like "subkap*" Then wksList.Delete
       Next wksList
    End Sub
    Snad to bude fungovat i v Excelu 97 (zkoušeno v 2000).

  3. #3

    Standardní

    No, kazdopadne diky, zajtra to urcite vyskusam...
    1st PC: AMD Barton 2500(oc:3200 - 11x200), MSI nforce K7N2deltaL, MSI GF FX5600VTR-D 128MB, RAM 2x512MB 400MHz
    2nd PC: Intel Core2Duo 6300, MSI P965 NeoF, MSI GF 7600GS, RAM 2x1024MB 800MHz

  4. #4

    Standardní

    Super, funguje to. Diky.
    Este 1 problemik pri 97: Funkcia chr v riadku pre leftfooter hlasi "ocakava sa pole". Co mu tam vlastne chyba ku stastiu? Potrebujem mat lavu patu v 2 riadkoch a chr(10) by malo simulovat "enter".

    With ActiveSheet.PageSetup
    .PrintTitleRows = ""
    .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = "meno" & chr(10) & "&F"
    .CenterFooter = "Zoznam káblov"
    .RightFooter = cislostrany
    .LeftMargin = Application.InchesToPoints(0.2)
    .RightMargin = Application.InchesToPoints(0.2)
    .TopMargin = Application.InchesToPoints(0.5)
    .BottomMargin = Application.InchesToPoints(0.7)
    .HeaderMargin = Application.InchesToPoints(0.2)
    .FooterMargin = Application.InchesToPoints(0.4)
    .PrintHeadings = False
    .PrintGridlines = False
    .PrintComments = xlPrintNoComments
    .PrintQuality = 600
    .CenterHorizontally = True
    .CenterVertically = False
    .Orientation = xlLandscape
    .Draft = False
    .PaperSize = xlPaperA4
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = True
    .Zoom = 80
    '.PrintErrors = xlPrintErrorsDisplayed
    End With
    1st PC: AMD Barton 2500(oc:3200 - 11x200), MSI nforce K7N2deltaL, MSI GF FX5600VTR-D 128MB, RAM 2x512MB 400MHz
    2nd PC: Intel Core2Duo 6300, MSI P965 NeoF, MSI GF 7600GS, RAM 2x1024MB 800MHz

  5. #5

    Standardní

    Ten řádek vypadá v pořádku. Jsi si jistý, že to hlásí chybu v něm? Jinak pro přechod na nový řádek je ve VBA přímo konstanta vbLf. Můžeš to zkusit napsat takhle, třeba to pomůže:
    Kód:
    ActiveSheet.PageSetup.LeftFooter = "meno" & vbLf & "&F"

  6. #6

    Standardní

    No, áno, je to v tom riadku - vždy sa to tam sekne, označí ho žltou (presne to "chr") a chce ladiť. Inak skúsil som aj otvoriť si nový súbor, nahrať nové makro kde som len vložil pätu a potom som sa doňho v editore pozrel - napísalo to tam presne to isté, tak neviem (vlastne odtiaľ som to odkukal). Ale dám si poradiť a skúsim tvoj nápad. Ale až v pondelok - v robote. Dík.
    1st PC: AMD Barton 2500(oc:3200 - 11x200), MSI nforce K7N2deltaL, MSI GF FX5600VTR-D 128MB, RAM 2x512MB 400MHz
    2nd PC: Intel Core2Duo 6300, MSI P965 NeoF, MSI GF 7600GS, RAM 2x1024MB 800MHz

  7. #7

    Standardní

    Tak pomohlo to. Diky moc. Inac som prekvapeny ako dlho trva ten "page setup" (teda aspon na P233 so 48MB RAM). Cau.
    1st PC: AMD Barton 2500(oc:3200 - 11x200), MSI nforce K7N2deltaL, MSI GF FX5600VTR-D 128MB, RAM 2x512MB 400MHz
    2nd PC: Intel Core2Duo 6300, MSI P965 NeoF, MSI GF 7600GS, RAM 2x1024MB 800MHz

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •