Trädvy Permalänk
Medlem
Registrerad
Feb 2002

Excel macro felsökning

Hej
Jag håller på att försöka automatisera vissa saker i Excel, bla. inhämtade och bearbetning av data från SMHI. Jag har dock ett problem, det är att de olika dataserierna är olika långa och jag skulle behöva fixa något som kan "känna av sista raden med data" och anpassa sig efter det. Jag visar min kod ser ut nedan (Jag använde macro recorder för att skapa bulken av koden, därför det är en massa skräp-kod med.):

Jag har fetmarkerat det steg jag skulle behöva lite hjälp med. Det är alltså "rangen" C2:CX som jag inte får att fungera. Hoppas någon här kan hjälpa mig.

Sub Vintertid()
'
' Vintertid Macro
'

'
Sheets("4mån data").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
ActiveCell.FormulaR1C1 = "Tid (Vintertid)"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[-1]+0.0416667"
Range("C2").Select

'Fylla kolumnen ner till sista värde
Selection.AutoFill Destination:=Range("C2:C1000")

Range("C:C").Select
Columns("C:C").Select
Selection.Copy
Columns("D:D").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Vintertid"
Columns("B:C").Select
Selection.Delete Shift:=xlToLeft
Range("C7").Select
Sheets("Historisk data").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[-1]+0.0416667"
Range("C2").Select

'Fylla columnen ner till sista värde
Selection.AutoFill Destination:=Range("C2:C")

Range("C:C").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Vintertid"
Columns("B:C").Select
Selection.Delete Shift:=xlToLeft
Range("B2").Select
Sheets("Admin").Select
End Sub

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009

Dim lastrow as long

lastrow = range("C65000").end(xlup).Row
Selection.AutoFill Destination:=Range("C2:C" & lastrow)

lastrow är vad du vill ha sista raden data ifrån. förstod inte riktigt allt du försökte göra med kodens hjälp så

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Registrerad
Feb 2002
Skrivet av Christley:

Dim lastrow as long

lastrow = range("C65000").end(xlup).Row
Selection.AutoFill Destination:=Range("C2:C" & lastrow)

lastrow är vad du vill ha sista raden data ifrån. förstod inte riktigt allt du försökte göra med kodens hjälp så

Fungerar finfint! Tack!

Undrar om du kanske också vet hur jag kan använda en rull-lista för att ändra text som ska användas i den webbadress jag använder för att importera data?

Egentligen flera mindre frågor:

Hur skapar jag en rull-lista i Excel?

Hur använder jag rull-listan för att ansätta text/siffror i en variabel i macrot?

Hur använder jag den ansatta variabeln i webb-adressen?

Vänliga hälsningar,
Snuffle

Trädvy Permalänk
Medlem
Registrerad
Feb 2002

Har kommit en liten bit på vägen. Har fixat en lista som lagrar en variabel, men jag kan inte få variabeln att vara tillgänglig i mina "modules". Variabeln är definerad som

Public station As String

i ThisWorkbook under Microsoft Excel Objects

För att sen ansätta variabeln station används

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

station = "12345"
MsgBox station

End Sub

Men när jag testar variabeln i någon annan av mina moduler med MsgBox station så får jag bara upp en tom ruta.

Någon som kan hjälpa mig?
/Snuffle