Forum » Programiranje » [Excel] problem z makrojem, visual basic
[Excel] problem z makrojem, visual basic
steev ::
Mam en problem.
Rad bi, da se makro naredi neko stvar pod pogojem (if).
Primer, če je v celici A5 vrednost 1 (ena), naj zbriše celo vrstico 5.
Zna kdo naredi kaj takega?
Takih vrstic je najvec 140. Se da nrediti za vse vrstice naenkrat, da ni treba za usako posebej pisat kodo.
Nekaj sem probaval tako, da sem posnel makro (oznacim vrstico+zbrišem), potem pa sem nekaj u kodi čačku, pa itk nimam veze s programiranjem.
Pls, help!
Rad bi, da se makro naredi neko stvar pod pogojem (if).
Primer, če je v celici A5 vrednost 1 (ena), naj zbriše celo vrstico 5.
Zna kdo naredi kaj takega?
Takih vrstic je najvec 140. Se da nrediti za vse vrstice naenkrat, da ni treba za usako posebej pisat kodo.
Nekaj sem probaval tako, da sem posnel makro (oznacim vrstico+zbrišem), potem pa sem nekaj u kodi čačku, pa itk nimam veze s programiranjem.
Pls, help!
:|
- spremenilo: snow ()
Vesoljc ::
vse se da narest :)
povej tocno kaj naj pocne makro. A5 -> to pomeni peto vrstico?
povej tocno kaj naj pocne makro. A5 -> to pomeni peto vrstico?
Abnormal behavior of abnormal brain makes me normal...
Zgodovina sprememb…
- spremenil: Vesoljc ()
steev ::
A5 je celica (A stolpec, vrstica 5). To sm dou mau na blef.
Uresnic mam tko u D stolpcu (D1, D2, D3, D4, ...D140). Če je ena v katerikoli celici, naj zbriše tisto vrstico.
Če je enka v D1, naj zbriše vrstico 1.
Če je v D2, naj zbriše vrstico 2, itd.
Uresnic mam tko u D stolpcu (D1, D2, D3, D4, ...D140). Če je ena v katerikoli celici, naj zbriše tisto vrstico.
Če je enka v D1, naj zbriše vrstico 1.
Če je v D2, naj zbriše vrstico 2, itd.
:|
Tutankhamun ::
Če ni A je pa D ane
Sub Macro1() Row = 1 Do If Cells(Row, "D") = 1 Then Range(Cells(Row, "D"), Cells(Row, "D")).Select Selection.EntireRow.Delete Else Row = Row + 1 If Cells(Row, "D") = "" Then Exit Sub End If Loop End Sub
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
steev ::
Ok, dela.
Kuko se pa naredi za več vrstic naenkrat:
Da ni sam za prvo. Vem da lahk za usako posebej nardim, sam se verjetn da narest da ti use naenkrat nardi.
Tm k je
Row = 1
Kaj napišem da bo od 1 do 140
Kuko se pa naredi za več vrstic naenkrat:
Da ni sam za prvo. Vem da lahk za usako posebej nardim, sam se verjetn da narest da ti use naenkrat nardi.
Tm k je
Row = 1
Kaj napišem da bo od 1 do 140
:|
steev ::
Zej sem dou talo ven:
If Cells(Row, "D") = "" Then Exit Sub
In dela, samo pojave se okno debug, verjetn k pride do konca tabele, do vrstice xyzwq.
If Cells(Row, "D") = "" Then Exit Sub
In dela, samo pojave se okno debug, verjetn k pride do konca tabele, do vrstice xyzwq.
:|
Tutankhamun ::
Ta progi dela tok časa, dokler ne naleti na prazno celico D. Se pravi briše use vrstice, kjer je D = 1, izvajanje programa se zaključi ob prvi prazni D celici.
Tale vrstica zaključi program.
If Cells(Row, "D") = "" Then Exit Sub
Jes ne vem kak zgleda tvoja tabela. Kakšne so pa ostale D celice, če not ne piše 1. A so prazne?
Kako veš do katere vrstice moreš pregledat?
Če imaš fiksno sam do 140 vrstice, lahko namesto vrstice
If Cells(Row, "D") = "" Then Exit Sub
napišeš
if row > 140 Then Exit Sub
Samo, če narediš fiksno do katere vrstice, pa lahko to nardiš tut brez makroja, čist enostavn.
Označš cel D stolpec, greš pod Data->Filter->Auto Filter, potem se ti pojavi pri celeci D1 izbirni okenček, kjer izbereš 1, zdej bi mogu vidt samo vrstice kjer je D = 1. Pa use označš, in pritisneš na remove row. To je vse
Tale vrstica zaključi program.
If Cells(Row, "D") = "" Then Exit Sub
Jes ne vem kak zgleda tvoja tabela. Kakšne so pa ostale D celice, če not ne piše 1. A so prazne?
Kako veš do katere vrstice moreš pregledat?
Če imaš fiksno sam do 140 vrstice, lahko namesto vrstice
If Cells(Row, "D") = "" Then Exit Sub
napišeš
if row > 140 Then Exit Sub
Samo, če narediš fiksno do katere vrstice, pa lahko to nardiš tut brez makroja, čist enostavn.
Označš cel D stolpec, greš pod Data->Filter->Auto Filter, potem se ti pojavi pri celeci D1 izbirni okenček, kjer izbereš 1, zdej bi mogu vidt samo vrstice kjer je D = 1. Pa use označš, in pritisneš na remove row. To je vse
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
steev ::
No zej pa dela. Program se nebi smel ustavit pri prvi prazni. Tabela je mešana.
1
0
1
1
0
0
Ko sem dal to ven da se ne ustavi, je delal do konca tabele, pol pa bug.
Zej vse lepo dela tako kot treba.
Hvala ti, mi je prav mal žal da nisem šel na računalništvo.
1
0
1
1
0
0
Ko sem dal to ven da se ne ustavi, je delal do konca tabele, pol pa bug.
Zej vse lepo dela tako kot treba.
Hvala ti, mi je prav mal žal da nisem šel na računalništvo.
:|
Tutankhamun ::
Sej nism Računaličar. Jes sm štromar. Ampak mi je zanimiv mal programirat.
AMD Phenom QUAD 9950 Black Edition, 8GB
Vesoljc ::
ko najdes prazno vrstico povecas en stevec. ce naletis na polno vrstico ga resetiras nazaj na nic. ce stevec doseze recimo 20, potem je skoraj ziher konec.
Abnormal behavior of abnormal brain makes me normal...
steev ::
Bom se kle neki uprasu.
Mam en stolpec kjer so sami if stvaki notr in pa valda vrednosti, ki jih if stavek vrže vn. Se da razporedit vrednosti (števila) po vrstnem redu od najmanjšega do največjega. More bit neka finta da mi razporedi vrednosti ne pa if stavke (if(D4=F4;E4;""), if(D5=F5;E5;"")... itd.)
Upam da me razumete.
Mam en stolpec kjer so sami if stvaki notr in pa valda vrednosti, ki jih if stavek vrže vn. Se da razporedit vrednosti (števila) po vrstnem redu od najmanjšega do največjega. More bit neka finta da mi razporedi vrednosti ne pa if stavke (if(D4=F4;E4;""), if(D5=F5;E5;"")... itd.)
Upam da me razumete.
:|
Tutankhamun ::
A mislš tko:
Imaš recimo v stolpcu A vrednosti
2
1
5
9
7
2
8
in zdej bi ti v tem istem stolpcu sortiral te vrednosti po velikosti.
Imaš recimo v stolpcu A vrednosti
2
1
5
9
7
2
8
in zdej bi ti v tem istem stolpcu sortiral te vrednosti po velikosti.
AMD Phenom QUAD 9950 Black Edition, 8GB
steev ::
Ja, to so vrednosti ki jih izpiše IF stavek. Ko dam da mi razporedi, mi razporedi IF stavke (tisto kar sm sam pisal v celice: =IF(...), ne razporedi mi pa vrednosti (ki jih if stavki izpisejo).
On mi razporeja to (kar je ze po vrstnem redu):
IF(D3>E3;1;2)
IF(D4>E4;1;2)
IF(D5>E5;1;2)
IF(D6>E6;1;2)
IF(D7>E7;1;2)
Jaz bi ba tako kot pravi Tutankhamun.
On mi razporeja to (kar je ze po vrstnem redu):
IF(D3>E3;1;2)
IF(D4>E4;1;2)
IF(D5>E5;1;2)
IF(D6>E6;1;2)
IF(D7>E7;1;2)
Jaz bi ba tako kot pravi Tutankhamun.
:|
Tutankhamun ::
To celo tvojo tabelco počrn/označ, pa pejt pod Data->Sort, pa potem ko te upraša Sort By, povej po katerem stolpcu sortiraš(to je stolpec kjer imaš vrednosti, recimo stolpec A iz mojga primera), in to ma da dela .
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
steev ::
Sam to ni fiksiran ($$, dolar). In kukr kol mi razporedi ostane isto.
A te lahko zaprosm da mi napises en makro.
Ok stvar je taka:
Mas stolpec A kjer so same vrednosti od if stavkov. A mi lahko napises nej u stolpec B nardi naslednje.
V B1 napiš = $A$1 (nej fiksira)
V B2 =$A$2
V B3 =$A$3
V B4 =$A$4
itd.
Da mi to program nardi, ker se mi ne da delat za uskga posebej.
Nemorm sam za enga narest, pa pol potegnt čez ceu stolpec, ker je fiksiran.
A te lahko zaprosm da mi napises en makro.
Ok stvar je taka:
Mas stolpec A kjer so same vrednosti od if stavkov. A mi lahko napises nej u stolpec B nardi naslednje.
V B1 napiš = $A$1 (nej fiksira)
V B2 =$A$2
V B3 =$A$3
V B4 =$A$4
itd.
Da mi to program nardi, ker se mi ne da delat za uskga posebej.
Nemorm sam za enga narest, pa pol potegnt čez ceu stolpec, ker je fiksiran.
:|
Tutankhamun ::
Sploh te ne zastopm, kaj ostane isto????????, dej kšno slikco, prej potem.
A si ti mislu, da bi sortiral po velikosti samo stolpec z vrednostmi, ostale stolpce bi pa pustu na mir? To bi se tut dal z makrojem sam, to je mal čudn(če sm te prov zastopu.
Makro za to da upišeš v B celico fiksno A, sploh ga nam testiru, ga bom kr na pamet napisu, sam se mi še sana ne kaj bi ti rad s tem naredu .
A si ti mislu, da bi sortiral po velikosti samo stolpec z vrednostmi, ostale stolpce bi pa pustu na mir? To bi se tut dal z makrojem sam, to je mal čudn(če sm te prov zastopu.
Makro za to da upišeš v B celico fiksno A, sploh ga nam testiru, ga bom kr na pamet napisu, sam se mi še sana ne kaj bi ti rad s tem naredu .
Row = 1 Do Cells(Row, "B") = "=$A$" & Row Row = Row + 1 LoopKer ČIP makro
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
steev ::
Ja, ja. Tko kt si reku. Sam stolpec z vrednostmi. In mi ni uspel. Zato pa hočem met stolpec s fiksnim vrednostmi.
Tole ubisvtu dela, sam zakva si dou loop. Pi*da, skor zmrznu tale P2.
Tole ubisvtu dela, sam zakva si dou loop. Pi*da, skor zmrznu tale P2.
:|
Tutankhamun ::
Sam si pa pojava. To si že sprašval mal bol gor, kak se iz loop zanke pride
Še enkrat
Pod Row = Row + 1 napiš
if Row > 140 then Exit Sub
Namest številke 140 pa upiš do katere vrstice bi ti rad pršu
Pa nau ti prov nč škodl, če bi mal pogledu te makroje, so enostavni, pa še kej bi se nauču - osnove.
Še enkrat
Pod Row = Row + 1 napiš
if Row > 140 then Exit Sub
Namest številke 140 pa upiš do katere vrstice bi ti rad pršu
Pa nau ti prov nč škodl, če bi mal pogledu te makroje, so enostavni, pa še kej bi se nauču - osnove.
AMD Phenom QUAD 9950 Black Edition, 8GB
steev ::
Ok, spet ima nek problem:
Tole je v kodi:
Range("A5").Select
Jest bi pa rad da je namesto tiste '5' vrednost neke celice. Se pravi da bi bilo sprmenljivo. Če imam v neki celici (npr: A1) vrednost 20 naj nardi:
Range("A20").Select
Lp
Tole je v kodi:
Range("A5").Select
Jest bi pa rad da je namesto tiste '5' vrednost neke celice. Se pravi da bi bilo sprmenljivo. Če imam v neki celici (npr: A1) vrednost 20 naj nardi:
Range("A20").Select
Lp
:|
Tutankhamun ::
Dim vrednost As String
vrednost = Cells(1, "A")
Range("A" + vrednost).Select
vrednost = Cells(1, "A")
Range("A" + vrednost).Select
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
steev ::
Dej kle mas celo kodo.
Sub Makro1()
Sheets("List1").Select
Range("A1:F10").Select
Range("F10").Activate
Selection.Copy
Sheets("List2").Select
Range("A6").Select
ActiveSheet.Paste
End Sub
Pa mi prosem dodaj notr
Sub Makro1()
Sheets("List1").Select
Range("A1:F10").Select
Range("F10").Activate
Selection.Copy
Sheets("List2").Select
Range("A6").Select
ActiveSheet.Paste
End Sub
Pa mi prosem dodaj notr
:|
Tutankhamun ::
in v keri celici bo pa pisal, katero celico naj izbere? In na katerem Listu ?
AMD Phenom QUAD 9950 Black Edition, 8GB
Tutankhamun ::
Sub Makro1()
Dim vrednost As String
Sheets("List1").Select
Range("A1:F10").Select
Range("F10").Activate
Selection.Copy
Sheets("List2").Select
vrednost = Cells(1, "A")
Range("A" + vrednost).Select
ActiveSheet.Paste
End Sub
Dim vrednost As String
Sheets("List1").Select
Range("A1:F10").Select
Range("F10").Activate
Selection.Copy
Sheets("List2").Select
vrednost = Cells(1, "A")
Range("A" + vrednost).Select
ActiveSheet.Paste
End Sub
AMD Phenom QUAD 9950 Black Edition, 8GB
Tutankhamun ::
Vau, zdej sm pogledu to temo. Sej to je prov najina tema . Pa ksn vesolček naju pride kdaj obiskat .
Na nest pa negrem. Ampak pijačka nj bo kr u dobrem
Na nest pa negrem. Ampak pijačka nj bo kr u dobrem
AMD Phenom QUAD 9950 Black Edition, 8GB
steev ::
Še en problemček
Sub Macro1()
Row = 1
Do
If Cells(Row, "D") = 1 Then
Range(Cells(Row, "D"), Cells(Row, "D")).Select
Selection.EntireRow.Hidden = true
Else
Row = Row + 1
If row > 140 Then Exit Sub
End If
Loop
End Sub
Zdej je pa to tista koda, ki so jo napisu prvo. Sedaj sem zamenjal, da mi namesto izbriše, skrije vrstico.
Vendar se ne ustavi pri 140 vrstici. Ampak Excel zmrzne. Kaj bi lahko naredil ....
Še rajši bi videl, da bi bila koda narejena tako, da najprej označuje vrstice ki imajo v stolpcu (D) 1. Nato pa skirje vse naenkrat.
Hvala
Sub Macro1()
Row = 1
Do
If Cells(Row, "D") = 1 Then
Range(Cells(Row, "D"), Cells(Row, "D")).Select
Selection.EntireRow.Hidden = true
Else
Row = Row + 1
If row > 140 Then Exit Sub
End If
Loop
End Sub
Zdej je pa to tista koda, ki so jo napisu prvo. Sedaj sem zamenjal, da mi namesto izbriše, skrije vrstico.
Vendar se ne ustavi pri 140 vrstici. Ampak Excel zmrzne. Kaj bi lahko naredil ....
Še rajši bi videl, da bi bila koda narejena tako, da najprej označuje vrstice ki imajo v stolpcu (D) 1. Nato pa skirje vse naenkrat.
Hvala
:|
Tutankhamun ::
Lahko v tistmu makroju k si ga prlepu, pod vrstico "...Hidden = True" in pred vrstico "else" napišeš Row = Row + 1.
Al pa kr ta makro prepiš
Sub Macro()
Row = 1
Do
If Cells(Row, "D") = 1 Then
Range("D" & Row).EntireRow.Hidden = True
Else
If Row > 140 Then Exit Sub
End If
Row = Row + 1
Loop
End Sub
Al pa kr ta makro prepiš
Sub Macro()
Row = 1
Do
If Cells(Row, "D") = 1 Then
Range("D" & Row).EntireRow.Hidden = True
Else
If Row > 140 Then Exit Sub
End If
Row = Row + 1
Loop
End Sub
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
steev ::
Uf, dela. Nevem, koko nej se ti zahvalim. Zakaj pa tisto ni delal, če ja pa z brisanjem čisto uredu delalo?
:|
Tutankhamun ::
Delal ni zato, ker nis imeu tm napisan Row = Row + 1, pol je pa skos skaku na vrstico 1.
Ti si pa takrt zbrisu če je bla 1, in je bla v vrstici že nova vsebina.
Res sm zakompliciran povedu :), ne znam drgač
Ti si pa takrt zbrisu če je bla 1, in je bla v vrstici že nova vsebina.
Res sm zakompliciran povedu :), ne znam drgač
AMD Phenom QUAD 9950 Black Edition, 8GB
steev ::
Ej, zdej sem pa res ze tecn, sam usen.
A bi se dal da bi oznaceval vrstice (kot da bi jih sam, vmes pa bi držal ctrl), in na koncu ko jih ima označene skrije vse naenkrat. Ker vrstic je ogromno (40k) in potem to dela dooolgo.
Lp
A bi se dal da bi oznaceval vrstice (kot da bi jih sam, vmes pa bi držal ctrl), in na koncu ko jih ima označene skrije vse naenkrat. Ker vrstic je ogromno (40k) in potem to dela dooolgo.
Lp
:|
Zgodovina sprememb…
- spremenil: steev ()
smetko ::
zamenjaj
Range("D" & Row).EntireRow.Hidden = True
z
Union(ActiveWindow.RangeSelection, Range("D" & Row).EntireRow).Select
in za loop dodaj
ActiveWindow.RangeSelection.EntireRow.Hidden = True
Pazi skrita bo tudi vrstica v kateri si bil pred zagonom makra.
Range("D" & Row).EntireRow.Hidden = True
z
Union(ActiveWindow.RangeSelection, Range("D" & Row).EntireRow).Select
in za loop dodaj
ActiveWindow.RangeSelection.EntireRow.Hidden = True
Pazi skrita bo tudi vrstica v kateri si bil pred zagonom makra.
No comment
steev ::
Označi jih pravilno (se pravi vse, ki imajo 1) samo skrije jih pa ne. Se bom se mal igral.
:|
smetko ::
ukaz kateri naj bi skril je
ActiveWindow.RangeSelection.EntireRow.Hidden = True
Če ni skril, potem se verjetno ni izvedel.
Mora biti v okviru rutine (pred End Sub).
ActiveWindow.RangeSelection.EntireRow.Hidden = True
Če ni skril, potem se verjetno ni izvedel.
Mora biti v okviru rutine (pred End Sub).
No comment
steev ::
Sub Makro4()
Row = 1
Do
If Cells(Row, "K") = 1 Then
Union(ActiveWindow.RangeSelection, Range("K" & Row).EntireRow).Select
Else
If Row > 1500 Then Exit Sub
End If
Row = Row + 1
Loop
ActiveWindow.RangeSelection.EntireRow.Hidden = True
End Sub
Tole mam, pa ne nardi. Samo označ jih.
Row = 1
Do
If Cells(Row, "K") = 1 Then
Union(ActiveWindow.RangeSelection, Range("K" & Row).EntireRow).Select
Else
If Row > 1500 Then Exit Sub
End If
Row = Row + 1
Loop
ActiveWindow.RangeSelection.EntireRow.Hidden = True
End Sub
Tole mam, pa ne nardi. Samo označ jih.
:|
Zgodovina sprememb…
- spremenil: steev ()
Tutankhamun ::
Men use vrstice 65536 kar jih je lahko na enem listu v Excellu nardi v par sekundah
Lej tole prepiš
Sub Macro()
Row = 1
Windows.Application.ScreenUpdating = False
Do
If Cells(Row, "D") = 1 Then
Range("D" & Row).EntireRow.Hidden = True
Else
If Row > 40000 Then Exit Do
End If
Row = Row + 1
If Row > 65536 Then Exit Do
Loop
Windows.Application.ScreenUpdating = True
End Sub
Lej tole prepiš
Sub Macro()
Row = 1
Windows.Application.ScreenUpdating = False
Do
If Cells(Row, "D") = 1 Then
Range("D" & Row).EntireRow.Hidden = True
Else
If Row > 40000 Then Exit Do
End If
Row = Row + 1
If Row > 65536 Then Exit Do
Loop
Windows.Application.ScreenUpdating = True
End Sub
AMD Phenom QUAD 9950 Black Edition, 8GB
Zgodovina sprememb…
- spremenil: Tutankhamun ()
smetko ::
za steev
zamenjaj vrstico
If Row > 1500 Then Exit Sub
z
If Row > 1500 Then Exit Do,
Da se bo po koncu zanke izvedli še ukazi za zanko
Sam raje uporabljam v primerih, ko je znano število ponavljan for ...next zanko.
zamenjaj vrstico
If Row > 1500 Then Exit Sub
z
If Row > 1500 Then Exit Do,
Da se bo po koncu zanke izvedli še ukazi za zanko
Sam raje uporabljam v primerih, ko je znano število ponavljan for ...next zanko.
No comment
steev ::
Ja Tutankhamun, ker nimaš enk. To tudi meni nardi. ko pa imam veliko enk, pol pa začne ...
Bom oboje probal. Lp
Bom oboje probal. Lp
:|
steev ::
Hm, dela. hvala obema, čeprav sem uporabil smetkov predlog. Se mi zdi boljši, pa še čist uredu dela.
Ampak res hvala obema.
P.S.: Kdo gre na nest?
Ampak res hvala obema.
P.S.: Kdo gre na nest?
:|
Tutankhamun ::
Js sm meu 65536 enk, ceu stolpc je biu u enkah. Tko da nevem o čem ti to . No nared pa tko kot ti paše. Useen pa probj še to pa primerjj.
AMD Phenom QUAD 9950 Black Edition, 8GB
Pifi ::
pozdrav. sem nov tukaj in vidim da obvladate sceno. imam torej problem: napisati funkcijo v makrih, ki zakodira in odkodira aktivno območje celic preglednice(openoffice calc). za kodiranje in odkodiranje mora uporanik vnesti geslo. help anyone?
steev ::
Ja kuko nej ti pa zakodira. Mores me nek algoritem, ki bo dve vrednosti 'spojil' v eno in obratno.
:|
steev ::
Pizda, kuko bi dou
ActiveCell.FormulaR1C1 = "=SUM(R[-12]C:R[-2]C)"
namest tm k je [-12] spremenljivko 'vrednost14'.
lp
ActiveCell.FormulaR1C1 = "=SUM(R[-12]C:R[-2]C)"
namest tm k je [-12] spremenljivko 'vrednost14'.
lp
:|
Pifi ::
že mam. moram rečt, da programske kode je kar veliko in je kar komplicirana. no hvala vseeno
lp
lp
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | vba arrayOddelek: Programiranje | 928 (621) | Vazelin |
» | Excel: tiskanje po vrsticahOddelek: Pomoč in nasveti | 1114 (1027) | luksorzi |
» | Makroji v exceluOddelek: Programska oprema | 2484 (2378) | smetko |
» | Prosim za pomoč pri VBAOddelek: Programiranje | 2110 (1913) | apachee |
» | Visual Basic in ExcelOddelek: Programiranje | 2689 (2255) | Vesoljc |