hur gör jag detta

Kontorsprogram

12 svar · 609 visningar · startad av prls

Medlem sedan jan. 2000352 inlägg
Trådstart#1

Hej, har tänkt göra följande i Excel:
ett arbetsblad där jag har kolumner lediga. Varje dag har jag tänkt mata in olika data i en kolumn.. Mitt problem är att jag skulle vilja att Excel automatiskt fyller i dagens datum -1 i "datum-cellen". Dvs gårdagens datum.
... går detta överhuvudtaget att genomföra ?
... hur gör jag detta?

Hoppas ni förstår mina tankegångar

Medlem sedan jan. 2000352 inlägg
#2

Tack Dennis,

hur skulle det lösas med VBA?

Medlem sedan jan. 2000352 inlägg
#3

Dennis, jätte TACK! exakt den funktionen jag eftersökte. Nu hoppas jag bara att jag lyckas - har aldrig programerat i VBA

Medlem sedan jan. 2000352 inlägg
#4

Har försökt hela lördagen att få det att fungera, men lyckas inte!!! Meningen är att när man öppnar arbetsboken så lägger XL till gårdagens datum i cell E7. Nästa dag när arbetsboken skall öppnas lägger XL till gårdagens datum i F7 osv...

Medlem sedan jan. 2000352 inlägg
#5

Så här är det tänkt att XL -bladet skall se ut
Det kanske är till lite hjälp.

Medlem sedan jan. 2000352 inlägg
#6

Tack, Dennis:-)

sedan mitt inlägg och fram till nu har jag funderat och funderat....

Kommit själv ca 1/2 väggs - undrar om Du kan svara på ngra frågor, så att jag kanske lär mig lite mer om VBA:
varför behövs:

  • wsOmrade.Activate?
  • Application.ScreenUpdating = False?

Kan Du förklara:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">lnNastakolumn = Application.WorksheetFunction.CountA(Range("E7:K7")) + 5
varför behövs 5 när jag skriver range fr E7 till K7 och vad betyder CountA?
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">If Cells(7, lnNastakolumn).Offset(0, 1).Value + 1

Postar även frågan så att tråden blir fullständig
tacksam återigen för all din hjälp!
/Peter

Medlem sedan dec. 199917 055 inlägg
#7

För att denna tråd ska bli "fullständig" så visar jag här hela koden
Och det ska du ha en eloge för. :)

Medlem sedan jan. 2000352 inlägg
#8

Dennis,
Ngra klargörande frågor bara…

E-kolumnen är den 4:e kolumnen och för att XL ska börja fr om den 4:e kolumnen lägger vi till "4".

…. Men E är 5:e kolumnen (A, B, C, D, E)?? Fast verkar funka ändå.
Och när jag öppnar dokumentet första gången så är E7 tomt

If Cells(7, lnNastakolumn).Offset(0, 1).Value + 1 <> Date Then
Cells(7, lnNastakolumn).Value = Date - 1

  • Cells(7, lnNastakolumn).Offset(0, 1) – förstod jag.
  • .Value + 1 – förstår jag fortfarande inte! Borde inte det stått: ”Datevalue”?? Eller funkar det för att cellen är tom och formaterad till datum?

JÄTTEtack än en gång!

Medlem sedan jan. 2000352 inlägg
#9

När filen öppnas 1:a gången, så är cell E7 tom och fylls därför i med gårdagens datum. därefter sparas filen, och varje gång jag öppnar den så fylls nästa kolumn i. Nu försökte jag själv med att om filen öppnas igen samma dag så skall det inte hända något!

Har försökt med 5 olika kombinationer, men får bara svaret:"kompileringsfel" här är ett av mina försök:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"> Sub Infoga_Datum()
Dim wsOmrade As Worksheet
Dim lnNastakolumn As Long

Set wsOmrade = ActiveWorkbook.Worksheets("Vätskebalans")
wsOmrade.Activate

lnNastakolumn = Application.WorksheetFunction.CountA(Range("E7:K7")) + 5

Application.ScreenUpdating = False
If Cells(7, lnNastakolumn).Value = Date - 1 Then
End Sub

If Cells(7, lnNastakolumn).Offset(0, 1).Value + 1 <> Date Then
Cells(7, lnNastakolumn).Value = Date - 1

End If
Application.ScreenUpdating = True

End Sub
mina ändringar – som alltså INTE funkar
det jag vill alltså är:

  1. Första gången filen öppnas = gårdagens datum läggs till E7.
  2. Därefter sparas filen.
  3. filen öppnas utan att datum läggs till i kolumn (F7:K7)
  4. När filen öppnas nästa dygn läggs gårdagens datum in i cell F7 osv
Medlem sedan jan. 2000352 inlägg
#10

Dennis,
om man inte är vetgirrig, kan man ju inget lära sig!

Ditt senaste funkar med, men min fråga är: varför fungerade den förra med?

Medlem sedan jan. 2000352 inlägg
#11

dennis,
fungerar perfekt, MEN!
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">bNastakolumn = Application.WorksheetFunction.CountA(Range("7:7")) + 1
Så definierar du variabeln bNastakolumn som den första tomma cellen i området "7:7" - som står för vad?

Medlem sedan jan. 2000352 inlägg
#12

Kan månne Range("7:7") betyda hela rad 7? och i såfall betyder: <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">bNastakolumn = Application.WorksheetFunction.CountA(Range("7:7")) + 2 att variabeln bNastakolumn definieras som den andra tomma cellen på rad 7. Rätt?

Medlem sedan jan. 2000352 inlägg
#13

Dennis,
tack för ovärderlig hjälp!!!!!

Imorgon är det jag som köper en bok i VBA. Därmed inte sagt att jag inte kommer att behöva hjälp mera

273 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
140 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
141 ms — ändringar (db)