Just nu i M3-nätverket
Gå till innehåll

Hjälp med Excel makro - matplanering


a-son

Rekommendera Poster

Mitt inlägg måste ha försvunnit:

Har villkor i meal plan och this week som funkar.

 

Felet blir när jag lägger in villkor i recept tabellen,

har inga villkor i den tabellen,

markerar hela kolumn C i tabellen,

skapar villkor

=OM($C6="";10;OMFEL(PASSA($C6;IngredDishes;0);0))=0

och då blir det fel.

Meal_Planner_AKT.zip

Länk till kommentar
Dela på andra webbplatser

  • Svars 120
  • Skapad
  • Senaste svar

mmh, det har du rätt i, den tabellen tycks inte fungera att göra det på.

Excel buggar.

 

Det verkar som det som buggar är att formeln ligger i formateringsregeln.

Lägg formeln

=ÄRFEL(PASSA([@DISH];IngredDishes;0))

i en kolumn utmed tabellen och använd denna kolumn som grund för formateringen med en enkel formel, i detta fallet

=$F6

räcker.

 

Det tycks fungera för mig.

Länk till kommentar
Dela på andra webbplatser

Är ute en sväng, får fixa lite ikväll.

tänker på det du sa om att utöka tabellen,

Det är ingen risk detta fall då?

Och då följer man den kolumnen?

 

Finns det något sätt att varna om man skriver in 0.5 istället för 0,5

Alltså med punkt i en tabell?

Länk till kommentar
Dela på andra webbplatser

Formeln fyller ut om du utökar tabellen. Likaså formateringen.

 

Punkt, datavalidering, tillåt enbart värden.

Länk till kommentar
Dela på andra webbplatser

Är nog inte med på hur du menar, hittar inget som stämmer under datavalidering,

jag gjorde så här:

markera område, datavalidering, decimalt, min=0,01 max=10000,00 funkar bra.

 

Nya ideer, går det att styra enhet utifrån vilken Ingrediens man valt exempel,

flyttar kolumnerna är i den här ordningen: dish, indgredient, amount, unit

så när man skriver in i den här ordningen i listan:

mos, potatis (då ska det bli kg automatisk i unit)

 

eller

om man skriver potatis, så kollar den av vilken enhet som använts tidigare, skriver man nåt annat så ska det upplysas.

 

orsaken är att om man har olika units på samma Ingrediens blir det 2 rader i shoppinglistan

Länk till kommentar
Dela på andra webbplatser

testade ditt tips med html publish, fick inte din kod att funkar, vet itne vad jag gjorde för fel, hittade den här

Sub Html_Export()
With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
    FileName:="C:\Users\x\Dropbox\Public\MealPlan\WWW\main1.htm", Sheet:="this week", Source:="$b$5:$e$29", _
    HtmlType:=xlHtmlStatic, DivID:="week")
        .Publish (True)
        .AutoRepublish = False
End With

With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
    FileName:="C:\Users\x\Dropbox\Public\MealPlan\WWW\main1.htm", Sheet:="meal plan", Source:="$b$5:$f$40", _
    HtmlType:=xlHtmlStatic, DivID:="Bok1_5047")
        .Publish (True)
        .AutoRepublish = False
End With
End Sub 

och det blev bra och gick fort att köra,

testade att sätta 2 olika DivID taggar i samma html kod, men det gick inte, sista skrev över allt,

är väl troligt att man gör något fel igen då,

spelar ingen roll egentligen, får göra 2 olika sidor annars helt enkelt

Länk till kommentar
Dela på andra webbplatser

Det där med enheter.

Det är ett problem givetvis. Nästan så att jag skulle säga att du får antingen mata in i samma enhet alltid eller räkna om till en standardenhet vid något steg, dvs se till att du bara har enheterna liter, kg och antal.

I sista steget kanske det sedan går att räkna om igen om så skulle behövas, till teskedar...

 

Två DivID i samma HTML.

Tror du gör bäst i att se till att båda dessa finns i filen innan du kör en kod som ska skriva till dem.  Anar att det saknas ett argument ovan i koden, ett som gör att den vid saknas av Div skriver över filen istället för att lägga till till filen.

ja, helt enkelt

.Publish False

lägger till

.Public True

skriver över

 

 

Datavalidering, precis så jag menade. Genom att specificera att det ska vara ett värde kan du tvinga bort punkt.

Fast vi har ju problemet med enhet.

Länk till kommentar
Dela på andra webbplatser

den här funkar bra,

Sub Html_Export()
Dim www As String
www = ActiveWorkbook.Path & "\WWW\index.htm"

With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
    FileName:=www, Sheet:="this week", Source:="$b$5:$e$29", _
    HtmlType:=xlHtmlStatic, DivID:="week")
        .Publish (True)
        .AutoRepublish = False
End With

With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
    FileName:=www, Sheet:="meal plan", Source:="$b$5:$f$37", _
    HtmlType:=xlHtmlStatic, DivID:="mealplan")
        .Publish (False)
        .AutoRepublish = False
End With
End Sub

ska fundera på det där med enheter, har en ide, måste bara översätta den till excel språk

Länk till kommentar
Dela på andra webbplatser

en liten tråkig detalj, länkarna under this week blir ingen href

 

när jag sparade boken som html så blir dom det.

känns som att det är en ganska viktig detalj

Länk till kommentar
Dela på andra webbplatser

Att det inte blir länkar på recept beror på att det inte är länkar i Excel. Du får se till att det blir en länk när du matar in den. Excel skapar för det mesta automatiskt länkar när du matar in http men inte alltid. Gå ett varv och kontrollera länkarna.

 

Har försvenskat boken åt dig, städat lite bland alla moduler, ändrat lite i HTML-exporten...

 

Tror inte jag missat något men en del av din egna kod, den som inte körs nu, kanske har referenser till bladnamn som ändrats. Se hur jag ändrat vid HTML-exporten, använd den modellen vid referering till blad.

 

Matplanering.zip

Länk till kommentar
Dela på andra webbplatser

Tackar, ska rensa bort mina macron som inte körs,

ska spara dom för framtida behova någonstans iallafall.

 

ser att du testar enheter, intressant, kan vara svårt att faställa enhet på artiklar kanske, hur många msk innehåller en chutney burk tex.

får se hur det kommer att bli i slutändan.

 

Just nu har jag alla filer i dropbox public katalogen, då uppdateras hemsidan direkt, när jag kör macrot

 

men har funderat på om det finns något annat bra sätt att publicera utan att köra en massa program, och om det finns någon bra host utan reklam..

Länk till kommentar
Dela på andra webbplatser

Enheter hade jag en tanke men den föll inte hela vägen ut...

 

Om du nöjer dig med att få allt i SI-enheter så är det inget större problem att implementera.

Dvs översätta ml, tsk osv till liter, gram till kg.

 

Sedan får du tänka lite i butiken, hur stor burk behövs för 0,03 l chutney :)

 

Publicera, egentligen bara att lägga i din dropbox och ladda sidan därifrån i din mobil. Eller spara som Excel-fil och öppna denna i din telefon. Inget behov av att gå via en hemsida egentligen och du har dropbox på din telefon.

Länk till kommentar
Dela på andra webbplatser

Ett litet tips

Tittar på din Sort-rutin, där använder du

 ActiveWorkbook.Worksheets("Ingredienser")

som referens till ett blad, kanske du fått det från en inspelning av kod?

 

Nåja, bättre är att referera till bladet med VBA-namnet

shIngr.ListObjects("Ingredients")

och egentligen skriva

Sub SortIngred()
'
' SortTabell Makro

    With shIngred.ListObjects("Ingredients")
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=.HeaderRowRange.Cells(1, 1), SortOn:=xlSortOnValues, Order:= _
            xlAscending, DataOption:=xlSortNormal
        With .Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub

exempelvis.

Länk till kommentar
Dela på andra webbplatser

Ja det är från inspelning, ska kolla på din kod senare,

Försöker få till lite mindre knapp tryckningar

för inte till att den ska titta på ("shSHopping").Range("K8") i min if sats

testade att declarerar dom och även att lägga in dom direkt i if satsen.

fick lösa det med shShopping.Activate instället

 

sedan funkar inte HTML exporten när jag anropar det så här.

 

behöver lite tips

Sub BeräknaHuvudMacro()
'Dim Run As String, shop As Integer, ourgr As Integer
'shop = Worksheets("shSHopping").Range("K8")
'ourg = Worksheets("shSHopping").Range("K9")

shShopping.Activate

If Range("K8").Value = "JA" Then
CompileShoppingList
End If

If Range("K9").Value = "JA" Then
OurGroceriesExport
End If

If Range("K10").Value = "JA" Then
Html_Export
End If

End Sub

Matplanering_5.zip

Länk till kommentar
Dela på andra webbplatser

Sub BeräknaHuvudMacro()
     With shShopping
        If .Range("K8").Value = "JA" Then
            CompileShoppingList
        End If
        If .Range("K9").Value = "JA" Then
            OurGroceriesExport
        End If
        If .Range("K10").Value = "JA" Then
            Html_Export
        End If
    End With
End Sub

exempelvis.

Om du ger cellerna namn och använder dessa i koden blir det än bättre.

 

HTML-export, du kan byta ut ActiveWorkbook till ThisWorkbook, lite säkrare som grundreferens.

Länk till kommentar
Dela på andra webbplatser

Sub BeräknaHuvudMacro()
     With shShopping
        If .Range("K8").Value = "JA" Then
            CompileShoppingList
        End If
        If .Range("K9").Value = "JA" Then
            OurGroceriesExport
        End If
        If .Range("K10").Value = "JA" Then
            Html_Export
        End If
    End With
End Sub

exempelvis.

Om du ger cellerna namn och använder dessa i koden blir det än bättre.

 

HTML-export, du kan byta ut ActiveWorkbook till ThisWorkbook, lite säkrare som grundreferens.

 

 

Just det ja, namn var det också, redan glömt det.

 

Någon har gjort om summeringen i inköp pivotabellen

blir så här nu

kyckling file	st	2
	gram	700
 

vilket skapar tomma rader vid min export, tidigare stod det kyckling file på båda raderan.

Länk till kommentar
Dela på andra webbplatser

Enkelt att justera.

 

Klicka i tabellen, i din Pivot. Klicka på ribbon Verktyg för Pivot - Design. Klicka där på knappen Rapportlayout och välj Upprepa alla elementetiketter.

Länk till kommentar
Dela på andra webbplatser

Hej igen, lyckats halv skapligt med något iallafall, men inte nöjd med koden

 

Får inte namn att fungerar

If BeräknaInköp = "SANT" Then

tog bort with när jag testade,

 

sen körde jag med riktiga adresser, och då fick jag inte det att funka med SANT FALSKT på dom,

så gjorde en workaround på det tillfälligt,

sedan har jag gjort en knapp på inköp sidan som jag inte vet hur jag ska radera

Sub BeräknaHuvudMacro()
'     With shShopping
'        If BeräknaInköp = "SANT" Then
'            CompileShoppingList
'        End If
'        If BeräknaKopiera = "SANT" Then
'            OurGroceriesExport
'        End If
'        If BeräknaExport = "SANT" Then
'            Html_Export
'        End If
    With shExport
        If .Range("F2").Value = 1 Then
            CompileShoppingList
        End If
        If .Range("F3").Value = 1 Then
            OurGroceriesExport
        End If
        If .Range("F4").Value = 1 Then
            Html_Export
        End If
    End With
End Sub

Matplanering_6.zip

Länk till kommentar
Dela på andra webbplatser

Fick bort ett steg, när man fattade att det är true och inte sant,

tycker inte om excels svengelska, sök är ctrl+b etc... 

Sub BeräknaHuvudMacro()
'     With shShopping
'        If BeräknaInköp = "SANT" Then
'            CompileShoppingList
'        End If
'        If BeräknaKopiera = "SANT" Then
'            OurGroceriesExport
'        End If
'        If BeräknaExport = "SANT" Then
'            Html_Export
'        End If
    With shExport
        If .Range("E2").Value = True Then
            CompileShoppingList
        End If
        If .Range("E3").Value = True Then
            OurGroceriesExport
        End If
        If .Range("E4").Value = True Then
            Html_Export
        End If
    End With
End Sub


Tillsluta fattar man 

        If [beräknaInköp] = True Then
            CompileShoppingList
 
så nu funkar det, fick även bort knappen som jag hade gjort.
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...