Wpis z mikrobloga

#programowanie Mirki piszę pewien skrypt liczący w VBA do excela. Nie znam się kompletnie na programowaniu, działam tylko w oparciu o chatgpt i o to co wyczytam w necie. Mam taki kod, który liczy współrzędne punktu w przestrzeni na przedłużeniu linii. Punkty z przyrostkiem D i G to punkty opisujące linię, hi to odległość do punktu nieznanego. Chciałbym aby skrypt wykonywał obliczenia do końca wczytanego zakresu danych (czyli do końca danych w kolumnach MNO). Czy może mi ktoś pomóc to dopisać, chatgpt nie czai o co mi chodzi.

Sub calculateFormula()
Dim M4 As Double
Dim M3 As Double
Dim P3 As Double
Dim N4 As Double
Dim N3 As Double
Dim O4 As Double
Dim O3 As Double

M4 = Range("M4").Value
M3 = Range("M3").Value
P3 = Range("P3").Value
N4 = Range("N4").Value
N3 = Range("N3").Value
O4 = Range("O4").Value
O3 = Range("O3").Value

Range("S3").Value = Range("M3").Value + (Range("P3").Value / (Sqr(((Range("M3").Value - Range("M4").Value) ^ 2) + ((Range("N3").Value - Range("N4").Value) ^ 2) + ((Range("O3").Value - Range("O4").Value) ^ 2))) * (Range("M3").Value - Range("M4").Value))
Columns("S").NumberFormat = "0.000"

Range("T3").Value = Range("N3").Value + (Range("P3").Value / (Sqr(((Range("M3").Value - Range("M4").Value) ^ 2) + ((Range("N3").Value - Range("N4").Value) ^ 2) + ((Range("O3").Value - Range("O4").Value) ^ 2))) * (Range("N3").Value - Range("N4").Value))
Columns("T").NumberFormat = "0.000"
Pobierz ziomekz - #programowanie Mirki piszę pewien skrypt liczący w VBA do excela. Nie znam ...
źródło: 1
  • 5
@ziomekz: chodzi Ci, że nie chcesz hardcodować adresów, tylko żeby samo szło w pętli do końca danych? Zamiast Range, może Cells bo tam masz położenie, nie literki, nigdy nie lubiłem Range.
@ziomekz: Musisz określić najpierw ostatni używany wiersz.

https://www.wallstreetmojo.com/vba-last-row/

Następnie znajac ostatni wiersz mozesz uzyc petli do przejscia przez kazdy z wierszy i wykonac kalkulacje

For x = 1 To *twój ostatni wiersz*
Range("S" + x).Value = Range("M" + x).Value + (Range("P" + x).Value / (Sqr(((Range("M" + x).Value -
Range("M" + x + 1).Value) ^ 2) + ((Range("N" + x).Value - Range("N" x + 1).Value) ^ 2) + ((Range("O" + x).Value -