Hojo taas,
Perskule kun en taaskaan saa toimimaan sellaista makroa jota haluaisin.
Mulla on sellainen ErrorMsg, jonka makro tuo ruutuun jos jotain hämminkiä tulee (On Error Goto ErrorMsg). Se toimii hyvin, mutta haluaisin myös toisenlaisen virhetarkastelun jonka voisi lisätä koodiin. Sen pitäisi toimia näin:
- Tarkastele Sheettiä "Allocation"
- tarkastele aluetta "S6:S66"
- Jos sarakkeella S on merkki "!!!", mene kohtaan ErrorMsg
- muussa tapauksessa (ei mitään merkkiä) seuraavaan riviin
- jos missään solussa ei ole merkkiä "!!!", jatka makroa eteenpäin
Saako tähän toimimaan If Then funktiolla? Oma kyhäelmä päätyi jumittamaan makron, joten pikku jeesi olisi paikallaan. Soluissa on IF-funktiolla toteutettu rivitarkatelu, joka tuo tiettyjen ehtojen toteutuessa soluun merkin "!!!". En tiedä onko tällä merkitystä, mutta Excelin mukaanhan solu ei ole tyhjä (""), jos siinä on kaava, vaikka se näyttäisi tyhjältä(Esim IF-funktion palauta "")
Voipi olla typeriä kysymyksiä, mutta olen joka tapauksessa pulassa tämän kanssa.
Terveisin,
AK
ak77116 kirjoitti:
- Jos sarakkeella S on merkki "!!!", mene kohtaan ErrorMsg
If ehto Then Goto ErrorMsg
En muista tarviiko tuo enaa tuota Then sanaa.
Pystyisitkö lisäämään sen tähän koodiin? Mulla on sellainen ongelma että kyhäämäni If Then funktio jää "kiertämään" eikä lähde eteenpäin. En osaa siis kirjoittaa sellaista koodia että se pääsisi ulos "kierteestä" ja jatkaisi makron muita tehtäviä. Se koodi voisi olla heti alussa jos mahdollista.
Sub HideRows()
BeginRow = 16
EndRow = 138
ChkCol = 13
Application.Calculation = xlManual
Application.ScreenUpdating = True
Sheets("PROFITABILITY").Select
Range("A1:A139").EntireRow.Hidden = False
For RowCnt = BeginRow To EndRow
        On Error GoTo ErrorMsg
    If Cells(RowCnt, ChkCol).Value = 0 Then
        Cells(RowCnt, ChkCol).EntireRow.Hidden = True
        End If
        Next RowCnt
        Application.Calculation = xlAutomatic
        Application.ScreenUpdating = True
        Exit Sub
ErrorMsg:
        Application.ScreenUpdating = True
        MsgBox ("Automatic macro can not run properly. Please make sure that you have entered all the figures in required fields in previous tables." & vbNewLine & vbNewLine & "You can find all incorrectly filled rows by searching ""!!!"" symbol on the right side of the table. When using ""Own method (%)"" the row sum must be equal to 100 %.")
        Sheets("ACTIVITY DRIVERS AND ALLOCATION").Select
        Range("G6").Select
        Application.Calculation = xlAutomatic
        End SubMod. lisäsi kooditagit
Moro ak77116!
testaa toimisiko näin...
Sub HideRows()
   BeginRow = 16: EndRow = 138: ChkCol = 13
   DisplayAlerts = False
   Calculation = xlManual
   ScreenUpdating = False
   Sheets("PROFITABILITY").Select
   Range("A1:A139").EntireRow.Hidden = False
   For RowCnt = BeginRow To EndRow
      On Error ResumeNext
      If Cells(RowCnt, ChkCol).Value = 0 Then
        Cells(RowCnt, ChkCol).EntireRow.Hidden = True
      End If
      If Err <> 0 Then
        Err.Clear
        On Error Goto 0
        MsgBox ("Automatic macro can not run properly. " & _
        "Please make sure that you have entered all the " & _
        "figures in required fields in previous tables." _
        & vbNewLine & vbNewLine & _
        "You can find all incorrectly filled rows by searching " & _
        Chr(34) & "!!!" & Chr(34) & "symbol on the right side " & _
        "of the table. When using " & Chr(34) & "Own method (%)" & _
        & Chr(34) & " the row sum must be equal to 100 %.")
        Sheets("ACTIVITY DRIVERS AND ALLOCATION").Select
        Range("G6").Select
      End If
   Next RowCnt
   Calculation = xlAutomatic
   ScreenUpdating = True
   DisplayAlerts = True
End SubHei Nea!
Kiitos vastauksestasi! Koodisi toimii varmasti hienosti, mutta taisin ilmaista asiani hiukan epäselvästi. Anteeksi siitä, koetan uudelleen:
Eli tuo alkuperäinen makro toimii ihan kuin pitääkin, mutta haluaisin siihen vielä lisäyksen, joka tarkistaisi "!!!" merkinnät S-sarakkeesta toiselta sheetiltä "Allocation". Eli jotakin tällaista pitäisi lisätä:
- Tarkastele Sheettiä "Allocation" ja aluetta S6;S66
- Jos alueella on merkki "!!!", mene kohtaan ErrorMsg
- jos missään solussa ei ole merkkiä "!!!", jatka makroa eteenpäin
Yritin lisätä tällaista itse tuohon koodiin, mutta luovuin ajatuksesta kun se jäi pyörimään paikallaan eikä lukenut makroa eteenpäin. Kyse lienee tavallisesta IF Then funktion käyttämisestä.
EDIT: Nythän mä tajusin missä on vika! Mulla on automaattinen makro joka käynnistyy joka kerta kun "Profitability" sivun aktivoi. Makro jumittaa siksi että käsken sitä käymään ensin toisella sheetillä ja tulemaan takaisin. Eli makro jää sahaamaan khden sivun väliä. Hmm, täytyypä miettiä jokin toisenlainen ratkaisu...
Aihe on jo aika vanha, joten et voi enää vastata siihen.