» »

Excel VBA in iskanje zadnje "polne" celice

Excel VBA in iskanje zadnje "polne" celice

borzon ::

Pozdravljeni,

Ker se komaj učim programeranja me zanima naslednje.
Rad bi napisal Makro, ki npr. sešteje dve celici A1 in B1 (bistvo ni v seštevanju ampak v kodi, ki išče zadnji polni vrstici). Naj poudarim, da mora biti tukaj koda za makro in ne zgolj "funkcija", ker bo koda del malo večje kode.
Torej zanima me kako napisati kodo za makro, ki bo pregledala stolpec A in B ter poiskala zadnjo polno celico ter vse celice A in B seštela medsebojno.

hvala

kljuka13 ::

Na prvi pogled bi sicer rekel, da poskušaš verjetno doseči nekaj drugega, pa to počneš na morda nekoliko neroden način. Pa vendar, zaporedno število zadnje neprazne vrstice v stolpcu A lahko poiščeš z
ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row


Verjetno pa ti bomo lažje pomagali, če napišeš, kaj zares želiš doseči. Še najbolje, da pokažeš kak dejanski primer (zaslonski posnetek) in želeni rezultat.

prtenjam ::

Za iskanje zadnje izpolnjene celice na celotnem listu (torej ne samo v koloni A ali B...) pa je potrebno uporabiti tole kodo:
Dim vrstica As Long: vrstica = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Matjaž Prtenjak
https://mnet.si

smetko ::

Podajam ti kodo, katero sem nekoč uporabljal za razbijanje podatkov, mogoče ti bo v pomoč. Z malo spremembami se jo da uporabiti tudi za tvoj namen. Osnovni namen je bil razbijanje piimka in imena v dva stolpca.
Slabost te funkcije je, da zaznava konec vse tabele, ne pa konec podatkov zato sem pred obdelavo počistil prazne stolpce. "Excel How To Delete Extra Blank Cells From Sheets" ti bo v pomoč pri iskanju rešitve. S tem sem tudi zmanjšal velikost datoteke, ter pohitril izvajanje obdelav. Če se boš dovolj potrudil, boš za to našel tudi makroje.


Sub PriimekInIme()
    Dim rng As Range
    Set ObjExcel = Excel.Application
    
    ' če je izbrana samo ena celica v koloni potem izbere celotno kolono
    Set rng = Selection.Cells
    If rng.Rows.Count = 1 Or rng.Rows.Count = ActiveSheet.Rows.Count Then
      Range(Cells(rng.Row + 1, rng.Column), _
        Cells(ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row, rng.Column)).Select
      Set rng = Selection.Cells
    End If
    
    rng.Offset(, 1).Resize(, 2).EntireColumn.Insert     ' Dodajanje 2 stoplcev
    rng(1, 1).Offset(-1, 1).Value = "PRIIMEK"           ' Naslov prvega dodanega stoplca
    rng(1, 1).Offset(-1, 2).Value = "IME"               ' Naslov drugega dodanega stoplca
  
    ' Obdelaj vsako vhodno celico
    For Each rng In Selection.Cells
        rng.Value = ObjExcel.Application.Clean(Trim(rng.Value))         ' počisti simbole
        rng.Value = Replace(Replace(rng.Value, "-", " "), "  ", " ")    ' zamenja "-" in dvojne presledke
        
        If InStr(rng.Value, " ") > 0 Then                               ' če najde vsaj en presledek
           rng.Offset(0, 1).Value = UCase(Left(rng.Value, InStrRev(rng.Value, " ") - 1))
           rng.Offset(0, 2).Value = UCase(Right(rng.Value, Len(rng.Value) - InStrRev(rng.Value, " ")))
        Else
           rng.Offset(0, 1).Value = UCase(rng.Value)
        End If
    Next
    Set rng = Nothing
    Set ObjExcel = Nothing
End Sub
No comment


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

excel

Oddelek: Programska oprema
324529 (3138) xtrat
»

excel+visual basic

Oddelek: Pomoč in nasveti
101464 (1351) švrk
»

Makroji v excelu

Oddelek: Programska oprema
62316 (2210) smetko
»

[Excel]Vrednost celice = ime dokumenta

Oddelek: Programska oprema
314538 (3960) veteran
»

Visual Basic in Excel

Oddelek: Programiranje
262511 (2077) Vesoljc

Več podobnih tem