Hirdetés

2024. május 3., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Visual Basic

Hozzászólások

(#2801) Bobrooney válasza Pali79 (#2800) üzenetére


Bobrooney
senior tag

Egy kicsit járj utána a dolgoknak, magyarul is találsz rengeteg könyvet, legalább a vezérlőket lesd meg, meg hogy miket tudnak, hidd el könnyebb dolgod lesz. Pl:
[link]

(#2802) Pali79


Pali79
aktív tag

Újabb kérdés: hogyan lehet gyökvonást csinálni? A neten Sqrt parancsot olvastam, de ilyen nincs a parancslistában.

(#2803) Ispy válasza Pali79 (#2802) üzenetére


Ispy
veterán

Math functions

A kód elejére ird be, hogy Import system.math, vagy ahol használni akarod oda, hogy Math.sqrt.

[ Szerkesztve ]

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2804) Pali79 válasza Ispy (#2803) üzenetére


Pali79
aktív tag

Szuper, köszi! Bár most megoldottam 0,5 hatványozással, még egyszerűbb is.

(#2805) Pali79


Pali79
aktív tag

Megint elakadtam... :W A régebbi leírásokba volt olyan, hogy INT, ez elméletileg a szám egész részét adja. Nekem az kell, hogy a számítás végeredménye csak egész legyen, nem kellenek a tizedes jegyek, de ilyet a linkelt leírásban sem találtam.

(#2806) Ispy válasza Pali79 (#2805) üzenetére


Ispy
veterán

Math.Round

Egyébként a gugli sokat tud ám segíteni, ha megkérdezed :)

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2807) Pali79 válasza Ispy (#2806) üzenetére


Pali79
aktív tag

Próbáltam én, hidd el! Én sem szeretek ennyit kérdezni, de nem jutottam egyről a kettőre.

(#2808) Bobrooney válasza Pali79 (#2807) üzenetére


Bobrooney
senior tag

Mint írtam annyi könyvet találsz mint a nyúlsz@r csak neki kéne esni.

(#2809) Ispy válasza Pali79 (#2807) üzenetére


Ispy
veterán

Az is sokat segít, ha nem VB 6-os könyvből tanulsz .NET-et programozni :P

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2810) Delila_1 válasza Pali79 (#2807) üzenetére


Delila_1
veterán

Itt nézd meg a Téma összefoglaló alsó sorát.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2811) alexy92


alexy92
aktív tag

Sziasztok,

Egy olyan makrón dolgozom, ami több hasonló műveletet végez el, több sheetről. A kérdésem az lenne, hogy van-e olyan parancs ami közé be tudom illeszteni az egyes részeket, hogy ha azon belűl bármi hibára fut, akkor azt a részt ne futassa le, hanem egyből a következő hasábra menjen?

Előre is köszönöm!

(#2812) Bobrooney válasza alexy92 (#2811) üzenetére


Bobrooney
senior tag

Hello!

[link]

(#2813) alexy92 válasza Bobrooney (#2812) üzenetére


alexy92
aktív tag

Köszi nézegettem, de nem nagyon érzem úgy, hogy az én megoldásom lenne.

Csináltam egy képet, hogy ábrázoljam mi is az én bajom:

És kb most 30-40 ilyen blokkról beszélek. Nem debugot keresek, hanem egyszerűen az általam választét részt hagyja el.

Köszönöm!

[ Szerkesztve ]

(#2814) Delila_1 válasza alexy92 (#2813) üzenetére


Delila_1
veterán

Nézd meg ezt!

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2815) alexy92 válasza Delila_1 (#2814) üzenetére


alexy92
aktív tag

Köszi, sajnos a benti hálozatom letiltja az oldalt, de otthon megnézem, és visszajelzek!

(#2816) alexy92 válasza Delila_1 (#2814) üzenetére


alexy92
aktív tag

Szia,

Sikerült megnéznem. A kérdésem az lenne, hogy ezt hogyan tudnám egy macroba rakni ?

(#2817) Delila_1 válasza alexy92 (#2816) üzenetére


Delila_1
veterán

A Module1-ben találod a makrókat.
Írd meg a 9 rutint, ahol a

Range("C" & sor) = Range("A" & sor) / Range("B" & sor)

sor helyére beírod a saját feladatodat. Az

If Err.Number <> 0 Then RutinC Else RutinB

sor helyén a saját rutinjaid nevét add meg! Minden rutinban különböző feladatokat adhatsz meg az én makróim osztása helyett.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2818) Bazs87


Bazs87
tag

Sziasztok!

VBS-ezgetek egy ideje, nagyon tetszik, hogy nem kell semmit telepíteni és pofátlanul egyszerűen használható, mindezt úgy, hogy még regexp lib is van hozzá.

Egy hobbiprojekt kapcsán megkeresett egy ismerősöm, hogy vb8-ban kellene valamit alakítani, ráadásul excel VBA funkciók átvételéve.
Mi és mekkora a különbség a vb és a vb.net közt? Egyértelmű leírást nem találtam eddig, igaz csak pár percet gugliztam.

Úgy gondoltam, h ha már vb.net akkor ne a 8-assal szerencsétlenedjünk, hanem az épp aktuális visual studio verzióval.

Vajon nagy fába vágom a fejszém ezzel? (sima "adatbázis"építés txt-ben és azokkal manipulálgatni, komolyabb dolgok elvileg nincsenek benne)

Köszi előre is!
Bazs87

(#2819) martonx válasza Bazs87 (#2818) üzenetére


martonx
veterán

Szia, a VBS tökéletes játszós nyelv, viszont semmi semmivel nem kopmatilibis aminek a nevében szerepel a visual basic.
Ugyanakkor a szintaktikájuk azonos, szóval annyira nem vészes vbs-ről vb.net-re tovább mozdulni, pláne ha zöldmezős fejlesztésről van szó, akkor én csakis VB.NET-tel állnék neki (na jó én személy szerint C#-al, de a lényeg hogy .Net).

Én kérek elnézést!

(#2820) Bazs87 válasza martonx (#2819) üzenetére


Bazs87
tag

köszönöm a választ!

én inkább delphiznék, de nagyon csábító, hogy a feladat nagyját elég lenne copyzni és otpimalizálni. Minden újraírni elég nagy favágás lenne valszeg. (excel funkciókat kellene átülteni egy programba és kicsit továbbokosítani)

Mivel ismerős, akivel csinálom csak vb-ben van otthon, így csak ez marad, de akkor legalább ne a vb8-cal csináljuk...

ideje lenne valamilyen naprakész rendszerrel is dolgozni, továbbá kizáró feltétel, hogy GUI is kell

(#2821) sztanozs


sztanozs
veterán

Erre rá tudna pillantani valaki? [link]
Tudom, hogy perverz, de nagyon kellene...

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2822) Ispy válasza sztanozs (#2821) üzenetére


Ispy
veterán

Inkább írd le, hogy pontosan mit szeretnél csinálni, és meglátjuk arra tudunk-e válaszolni. :)

Valami szöveges fájlból szeretnél adatokat kinyerni?

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2823) sztanozs válasza Ispy (#2822) üzenetére


sztanozs
veterán

Szeretnék VBA alatt elérni a System.IO.File statikus osztályt, hogy a File.Open statikus függvénnyel FileStream-et állítsak elő. Ehelyett nekem az is megfelelő, ha a FileStream osztály inicializálni tudom. De ugye VBA alatt csak defualt - argumentum nélküli - konstruktor hívható, de a FileStream-nek nincs ilyen, ezért a new keyword sem használható.

Igazából az volna, hogy most működő - Excel addin - System.Security.Cryptography.SHA512Managed objekumomat nem byte-array-jel etessem meg, hanem FileStream-mel. Ez egyrész jóval gyorsabb, másrészt memóriatakarékosabb, harmadrészt működik 2GB feletti fájlokkal is.
PowerShell és natív .NET kilőve. Esetleg még VBS jöhet szóba, de az ugyanez a tészta.

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2824) Ispy válasza sztanozs (#2823) üzenetére


Ispy
veterán

Hát ilyet én még nem csináltam VBA-ban (szerencsére már semmi nem csinálok VBA-ban jó ideje :D ), de a gugli szerint lehetséges.

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2825) sztanozs válasza Ispy (#2824) üzenetére


sztanozs
veterán

Köszi, ezt én is megtaláltam már. Az a baj ezzel, hogy ezek nem .NET FileStream objektum megoldások, hanem a VBScript-ben is használt FSO (FileSystemObject). Ezt nem tudom megetetni a másik (SHA512Managed) .NET osztállyal.

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2826) martonx válasza sztanozs (#2823) üzenetére


martonx
veterán

Miért nem írsz te magad egy excel addin-t normális .Net-ben? És utána azt használhatnád Excel VBA-ból. Hozzáteszem csak ötletelek, nem tudom, hogy ez járható út-e?

Én kérek elnézést!

(#2827) sztanozs válasza martonx (#2826) üzenetére


sztanozs
veterán

Mert a DLL addin-t (XLL) telepíteni és regisztrálni kellene ami a jelenlegi környezetben igen macerás.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2828) martonx válasza sztanozs (#2827) üzenetére


martonx
veterán

Akkor ideje webre migrálni az egész hóbelevancot ;]

Én kérek elnézést!

(#2829) Bazs87


Bazs87
tag

Sziasztok!

A fórumot olvasva kedvet kaptam az excel vba-hoz. Olyan amatőr kérdésem lenne, hogy hogyan tudom visszakapni a felhasználó által aktuálisan kiválasztott cellát? És milyen változóban tudom az értéket kimenteni?

A zárolt sor oszlopnál selectelnem kell, de elég idegesítő, h ugrál a kurzor. Az elején lementeném a végén pedig visszanavigálnék ugyanoda. Elméletem szerint így észre sem lehetne venni a működését.

Netán hamvába holt ötlet?

Köszi!
Bazs87

[ Szerkesztve ]

(#2830) Bazs87 válasza Bazs87 (#2829) üzenetére


Bazs87
tag

megoldódott ActiveCell-string, az odavissza kapcsolgatás meg nem szép:D Imsertek esetleg jobb megoldást?

(#2831) sztanozs válasza Bazs87 (#2829) üzenetére


sztanozs
veterán

Miért kell selectelned? Az maximum copy-paste-hez kell.
Minden mást meg lehet oldani ActiveCell nélkül.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2832) Delila_1 válasza sztanozs (#2831) üzenetére


Delila_1
veterán

Még ahhoz sem.

range("a1:d10").copy range("m20")

vagy
Range("a1:b10").Copy
Range("m5").PasteSpecial xlPasteValues

[ Szerkesztve ]

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2833) Bazs87 válasza sztanozs (#2831) üzenetére


Bazs87
tag

ActiveWindow.FreezePanes = False
Range("F7").Select
ActiveWindow.FreezePanes = True

Ha 2D-s zárolást szeretnék(azért mert ha csak 1D-t csinálok kizárólag az első sor lehet valamilyen beteg ok miatt zárolva, viszont én az első x sort szeretném zárolni), akkor vmivel ki kell jelölnöm, hogy honnan zárjon és manuális megoldással ezt az odaklikkeléssel lehet elérni.
Talán van valamilyen expert funkció, de sajnos én nem ismerem.
Nyitott vagyok és érdeklődő ;)

[ Szerkesztve ]

(#2834) sztanozs válasza Bazs87 (#2833) üzenetére


sztanozs
veterán

Google 5sec, első második találat (bár az elsőben is ott van, csak nem az első válaszban és kicsit fellengzősebben):
With ActiveWindow
If .FreezePanes Then .FreezePanes = False
'Freeze F6: 5 oszlop és 6 sor zárolása
.SplitColumn = 5 'fix oszlopok száma
.SplitRow = 6 'fix sorok száma
.FreezePanes = True
End With

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2835) Bazs87 válasza sztanozs (#2834) üzenetére


Bazs87
tag

a gyakorlat meg az évek :)

nekem ez konkrétan az első excel makróm:p

köszi a tippet!

(#2836) sztanozs válasza Bazs87 (#2835) üzenetére


sztanozs
veterán

Ok, mindent bele és gyúrj rá a keresésre - szinte minden esetlegesen felmerülő problémádra van már megoldás.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2837) vilag


vilag
tag

Sziasztok!

Az lenne a kérdésem, hogy lekérdezhető-e valahogyan az autofilterrel szűrt találatok eredménye?

A bal alsó sarokban ugye kiírja, hogy "4061 rekordból 13 rekordot talált"

Ez utóbbi számot szeretném valahogy VBA-ban lekérdezni.

Megoldható ez?
Googliban és VBA-ban sem találtam megoldást (ez persze nem azt jelenti, hogy nem is létezik megoldás).

Üdv, vilag

(#2838) Amiens válasza vilag (#2837) üzenetére


Amiens
tag

Sima Részösszeg()-gel is megpróbálhatod.

=RÉSZÖSSZEG(3;A2:A11)

[ Szerkesztve ]

iPhone 11 Pro / LG G6 / Lumia 950 / Nokia E72

(#2839) vilag válasza Amiens (#2838) üzenetére


vilag
tag

Lényeges lenne, hogy VBA-ból lehessen lekérdezni, mert a szűrési folyamat is onnan fut és ha nincs találat akkor hibára futok.

Ezzel szeretném ezt kiküszöbölni, mert ha a szűrés eredményeként 0 találat van, akkor azt már könnyedén le tudom kezelni.

[ Szerkesztve ]

(#2840) Ispy válasza vilag (#2839) üzenetére


Ispy
veterán

Gugliban ezt találtam, nem tudom segít-e rajtad.

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2841) Amiens válasza vilag (#2839) üzenetére


Amiens
tag

Akkor még egyszerűbb a dolgunk:
szurt = Application.WorksheetFunction.Subtotal(3, Range("A2:A10"))

iPhone 11 Pro / LG G6 / Lumia 950 / Nokia E72

(#2842) vilag válasza Amiens (#2841) üzenetére


vilag
tag

Köszönöm!

Ez a triviális megoldás nem jutott eszembe, gondoltam elegánsabb lekérdezni az excelből ha már tudja, így attól az elképzeléstől nem tudtam elvonatkoztatni.

Kicsit alakítani kellett rajta, mert a "fejléc" 14 sor, de sikerült megoldani.

(#2843) alexy92 válasza Delila_1 (#2817) üzenetére


alexy92
aktív tag

Szia,

Most sikerült ténylegesen foglalkoznom vele, és a helyzet az, hogy szépen tovább lép a suboknál, de sajnos akkor is amikor nem dobna fel hibát. Mit ronthattam el ?

On Error Resume Next
Selection.Copy <- itt szokott kijönni az 1004-es hiba, mert sok a kijelölt cella
If Err.Number <> 0 Then kövi utáni sub Else Kövi sub

De itt mindig a "kövi sub" jön ki.

Előre is köszönöm,
Viktor

(#2844) Delila_1 válasza alexy92 (#2843) üzenetére


Delila_1
veterán

A kövi sub előtt nullázd le a hibakódot:

On Error Goto 0

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2845) alexy92 válasza Delila_1 (#2844) üzenetére


alexy92
aktív tag

Az a gond, hogy az iferror után nekem minden sub-ban kb 200+ sor van, és azt szeretném, hogy ha nincs error, ebben a kiemelt részben, akkor folytassa magát a subot. Ha lenullázom a kövi sub-ban, akkor az ott fog élni, de az előző subon nagy része nem fut le.

(#2846) Delila_1 válasza alexy92 (#2845) üzenetére


Delila_1
veterán

A kövi sub elején nullázd le.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2847) alexy92 válasza Delila_1 (#2846) üzenetére


alexy92
aktív tag

A probléma az, hogy,

Sub1
művelet
művelet
művelet
On Error Resume Next
Selection.Copy <- itt szokott kijönni az 1004-es hiba, mert sok a kijelölt cella
If Err.Number <> 0 Then sub3 Else sub2
művelet
művelet
művelet
end

sub2
On error goto 0
művelet
művelet

Ha én a kövi sub elején nullázom le, akkor a kövi subot folytatja, az if err.number utáni részt elhagyja, ha hibára fut, ha nem. Értelemszerűen, ha hibára fut, akkor jól teszi, de nekem jelenleg hiba nélkül is átugorja.

Köszi!

(#2848) sztanozs válasza alexy92 (#2847) üzenetére


sztanozs
veterán

szedd szét így, és tudod majd debugolni:
If Err.Number <> 0 Then
sub3
Else
sub2
End If

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2849) alexy92 válasza sztanozs (#2848) üzenetére


alexy92
aktív tag

Szia,

Szétszedtem, de mindig ez ELSE-re fut, ha hiba van, ha nem. Mi lehet a probléma?

Köszi!

(#2850) Ispy válasza alexy92 (#2849) üzenetére


Ispy
veterán

Rakjál be egy breakpointot az else-re és nézzed meg mi az értéke az Err.Number-nek.

Én csinálnék egy class szintű változót (IsError), majd on error goto ...., ide beraknám, hogy IsError = True, majd Resume, IF IsError = True Then sub2 Else sub 3 END IF a subok elején meg IsError = False.

[ Szerkesztve ]

"Debugging is like being the detective in a crime movie where you're also the murderer."

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Visual Basic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.