Zavrieť

Porady

Makro VBA

Ahojte, potrebujem poradiť.

Mám hárky a potrebujem makro:
Do InputBox zadám Január

Makro prebehne všetky hárky a ak sa nachádza hárok s názvom Január tak trebárs vyhodí MsgBox že existuje a či chcem daný hárok prepísať:
Ak zadám áno tak blablabla ( to si už doplním)
Ak zadám nie tak makro skončí.

Ak po prebehnutí všetkých hárkov predsa nenajde hárok s názvom január tak taký vytvorí.

Mám z toho už nervy, lebo neviem ako ďalej...

Sub Msg()
Dim harok As Worksheet

list = InputBox("Zadaj názov hárku")
For Each harok In Worksheets

If Not harok.Name = list Then
MsgBox ("Nieje rovnaké opakuj")
Else
MsgBox ("Existuje kopíruj")
Exit For
End If

Next

MsgBox ("Vytvor nový hárok")

End Sub




Len keď raz hárok existuje, tak nechcem aby ho aj vytvorilo, keďže na konci je Vytvor nový hárok.

Len ak ho dám do Else, tak po prvom hárku pôjde vytvárať nový hárok"



Preto potrebujem aby prebehlo všetky a až potom sa rozhodlo či vytvorí nový, alebo v starom hárku prepíše hodnoty.
Naposledy upravil Snoophy : 25.11.15 at 15:07
Usporiadat
excel.sk excel.sk

excel.sk je offline (nepripojený) excel.sk

Lektor kurzov Excel
Sub KontrolaHarkuPorada()
Dim Harok As Worksheet, MenoHarku As String, NoveMeno As String
MenoHarku = InputBox("Zadaj meno hľadaného hárku")
For Each Harok In Worksheets
If Harok.Name = MenoHarku Then
NoveMeno = InputBox("Harok existuje, zadaj nový názov")
Sheets(MenoHarku).Name = NoveMeno
Exit Sub
Else
End If
Next
Sheets.Add.Name = MenoHarku
End Sub
0 0
Menej reklamy? Zaregistrujte sa! - Žiadne vyskakovacie reklamy!
Snoophy Snoophy

Snoophy je offline (nepripojený) Snoophy

Ani toto nieje dobré...

Skontroluje prvý hárok - nieje rovnaký, pokračuje ďalej
kontroluje druhý hárok - tiež nieje rovnaký, pokračuje ďalej
kontroluje tretí posledný hárok a tento tiež nieje rovnaký,
tak ide vytvoriť nový hárok.

Druhý prípad:
Skontroluje prvý hárok - nieje rovnaký, pokračuje ďalej
kontroluje druhý hárok - ten je rovnaký, tak vypíše nachádza sa rovnaký hárok a Exit For:
POsledný už neskontroluje nakoľko sa našla zhoda. Makro skončí ( už nebude vytvárať žiadny nový hárok).
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

Pre mňa je to dosť nečitateľné, ale mám takýto návrh.
Vytvor si premennú "nasielsom" typu boolean. Na začiatku ju nastav na False. Prejdi všetky hárky a v prípade kladného výsledku nastav nasielsom na True. Exit vynechaj. Za cyklom for vložíš if not nasielsom then - vytvoríš hárok.
0 0
Snoophy Snoophy

Snoophy je offline (nepripojený) Snoophy

No myslím že viem čo myslíš, ale neviem to bohužial napísať. Už keď to bude napísané tak si to budem vedieť zmeniť.
Ale idem pohľadať na nete. Možno najdem niečo podobné.

Ale určite to tak bude fungovať - prehľadá všetky hárky, keď nenájde bude TRUE a podmienkou dám už len ak je TRUE tak vytvor nový a keď FALSE tak MsgBox ("Už existuje")

Ak by sa ti to chcelo prosím naťukaj aspoň základ....budem rád, nakoľko už sa snažím od včera a neúspešne.
0 0
PaloPa PaloPa

PaloPa je offline (nepripojený) PaloPa

Code:
Sub KontrolaHarkuPorada()
    Dim Harok As Worksheet, MenoHarku As String, NoveMeno As String
    
    On Error GoTo xErr
    
    MenoHarku = Trim(InputBox("Zadaj meno hľadaného hárku: "))
    If MenoHarku = "" Then
        MsgBox "Nezadané meno, končím!", vbCritical, "Chyba"
        Exit Sub
    End If
    
    For Each Harok In Worksheets
        If Harok.Name = MenoHarku Then
            MSG1 = MsgBox("Hárok " & MenoHarku & " existuje, mám ho premenovať ?", vbYesNo, "Otázka?")
            If MSG1 = vbNo Then
              Exit Sub
            Else
              NoveMeno = Trim(InputBox("Zadaj nový názov: "))
              If NoveMeno = "" Then
                MsgBox "Nezadané meno, končím!", vbCritical, "Chyba"
                Exit Sub
              End If
              Sheets(MenoHarku).Name = NoveMeno
              Exit Sub
            End If
        End If
    Next
    Worksheets.Add After:=Sheets(ActiveWorkbook.Sheets.Count)
    ActiveSheet.Name = MenoHarku
    Exit Sub
xErr:
    MsgBox Err.Description

End Sub
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

S VBA už nerobím nejakých 15 rokov, takže syntax som zabudol


Sub KontrolaHarkuPorada()


Dim Harok As Worksheet, MenoHarku As String, NoveMeno As String, Nasiel As Boolean


MenoHarku = InputBox("Zadaj meno hľadaného hárku")
Nasiel = False


For Each Harok In Worksheets
If Harok.Name = MenoHarku Then
NoveMeno = InputBox("Harok existuje, zadaj nový názov")
Sheets(MenoHarku).Name = NoveMeno
Nasiel = True
Else
End If

Next
Sheets.Add.Name = MenoHarku
End

if Nasiel Then
// Tu si vytvoríš nový hárok
Sub
0 0
Snoophy Snoophy

Snoophy je offline (nepripojený) Snoophy

Tak už sa mi podarilo napísať, neviem kde som to v hlave vyhrabal :-)

A až keď som zistil, že mi to funguje som si prečítal, že ste sem dali zápis:

Sub KontrolaHarkuPorada()
Dim Harok As Worksheet, MenoHarku As String, Porovnanie As Boolean


Porovnanie = True

MenoHarku = InputBox("Zadaj meno hľadaného hárku")


For Each Harok In Worksheets

If Harok.Name = MenoHarku Then
Porovnanie = True
Exit For

Else
Porovnanie = False


End If

Next

If Porovnanie = True Then
MsgBox ("True Kopiruj")

Else
MsgBox ("False Vytvor nový")

End If

End Sub




Ale ďakujem za nakopnutie :-)
0 0
Snoophy Snoophy

Snoophy je offline (nepripojený) Snoophy

Ahojte, mám nový problém a to taký, že v makre mám zadané vytvorenie päty pri tlači a problém je v tom, že keď krokujem makro tak pekne vytvorí pätu: list 1/5 , ale ako náhle makro spustím cez šípku tak vôbec pätu nevytvorí.
Stalo sa to už niekomu?
Súbor v prílohe...netuším kde je chyba. V zápise asi nieje však?
0 0

Sleduj porady, ktoré by vás mohli zaujímať