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 Sub
Mod. 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 Sub
Hei 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.