-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
#90999040
törölt tag
Üdv!
A következő problémára keresek választ:
Adott egy userformon több frame, melyek szintén több vezérlőt tartalmaznak.
Egy közbenső frame léptetési sorrendben utolsó vezérlőjének exit subjába írtam meg egy vizsgálatot, amely ebből következőleg a vezérlőből való kilépéskor elvégez bizonyos ellenőrzést.
A probléma azonban az, hogy ha ez az adott frame utolsó (aktív) vezérlője, akkor az exit sub nem fut le sem akkor ha tabbal közlekedem, sem pedig akkor ha egérrel. Akkor fut le az említett exit sub ha újra visszatérek a frambe (mondjuk egérkattintással)Valakinek van ötlete, hogy mi okozza ezt, illetve, hogy hogyan lehet meggyógyítani vagy kitrükközni?
Előre is köszönöm!
Gondolom exit eseményt akartál írni, mert az exit sub egy kicsit más.

A lényeg az, hogy ez nem csak akkor következik be, ha az utolsó aktív vezérlőről van szó, hanem amikor egy frame-n belüli vezérlőről átváltasz egy frame-n kívülire. Ugyanis ilyenkor nem a frame-n belül levő vezérlő exit-je fut le, hanem a frame exit-je.
Ezt pl. így ki lehet kerülni:
A userformon belül létrehozol egy Control típusú változót, pl.: Private active As Control
Ezután az adott frameben levő minden vezérlőjének Enter() eseményébe beírod ezt: Set active = Me.<Frame neve>.ActiveControl
Az adott vezérlőd exit()-jébe pedig ezt:
Private Sub <Vezérlőd>_Exit(.........
If Not active Is Nothing Then
'itt lehet meghívni az eseményt
End If
End SubEz mellett persze még a frame exit()-jét is le kell kezelni:
Private Sub <Frame neve>_Exit(.......
If Me.<Vezérlőd>.Name = Me.<Frame neve>.ActiveControl.Name Then
Set active = Nothing
'itt ugyanúgy meghívod a vezérlőd exit()-jénél végrehajtandó kódot
End If
End Sub -
#90999040
törölt tag
Sziasztok.
Van arra lehetőség, hogy Visual Basic 6.0-ban olyan programot csináljak, ami az egér kurzort egy megadott helyre mozgatja és ott kattint?
Van egy elég monoton munkafolyamatom, ahol a monitor adott pontjaira kattingatok.
Már fáj a csuklóm.
Arra gondoltam, hogy csinálok egy olyan makrót, vagy akár VB6-os programot, ahol csak egy helyre kattingatok, és az előre megadott kordinátákra viszi az egeret, kattint, majd vissza az egér (hogy tudjak újra kattintani...).Nézegettem angol fórumokat, de nem nagyon értettem.
Előre is köszi.
Van rá lehetőség, winapi mouse_event(), vagy SendInput() függvényével.
A mouse_event() használata egyszerűbb, de a MS már új fejlesztésekhez nem ajánlja. A SendInput() bonyolultabb, de ezzel pl. billentyűlenyomást is lehet generálni, és a MS ezt ajánlja inkább...
-
#90999040
törölt tag
megtaláltam:
Sub rög4()
'minta védelem feloldására
Sheets("Munka2").Select
'azért kell először feloldani a védelmet, mert a kijelölés munka1!a1 megszűnik
pass = "123456789"
ActiveSheet.Unprotect pass
'most lehet másolni!
Sheets("munka1").Select
Range("a1").Select
Selection.Copy
Sheets("Munka2").Select
Range("A1").Select
ActiveSheet.Paste
'majd rátenni a védelmet!
ActiveSheet.Protect Password:=pass
Sheets("munka1").Select
End Sub
Pontosan ezekről beszéltem. Ezt a kódot így is meg lehetne csinálni:
Sheets("munka1").Select
pass = "123456789"
Sheets("munka2").Unprotect pass
Sheets("munka1").Range("a1").Copy Destination:=Sheets("Munka2").Range("A1")
Sheets("munka2").Protect Password:=passEz pontosan azt csinálja, amit a Tiéd, csak nem 11, hanem 5 sorban.
Újra kihangsúlyozom: VBA-ban a Select és az Activate használatát csak elkerülhetetlen esetben célszerű használni, így a legtöbb esetben az Application.ScreenUpdating használata is feleslegessé válik(kivéve, ha az aktív munkalapra másolsz nagy mennyiségű adatot), valamint a kód is áttekinthetőbb. -
#90999040
törölt tag
Sziasztok!
Szeretném, ha a makróm futása közben nem mutatná az oldalakat ahonnan adatokat másol, csak a végeredményt!
Biztosan van rá valami utasítás,csak még kezdő vagyok.
Előre is köszi.

Másolás közben kerüld a Select és az Activate használatát!!!
Dim munkalap As String
munkalap = "munka1"
Worksheets(munkalap).Range("a1:c3").Copy _
Destination:=Worksheets(munkalap).Range("e1")Ha a másolás után a célterületet szeretnéd aktívan látni, akkor arra add ki a Select-et.
-
#90999040
törölt tag
"Természetesen a word-ből is lehet az excel objektumait használni."
És a másik alkalmazás VBA utasításkészletét is? Tehát levezényelhetném az excelből (DDEExecute nélkül) a körlevélkészítést a MailMerge-vel valami módon?És a másik alkalmazás VBA utasításkészletét is? Tehát levezényelhetném az excelből (DDEExecute nélkül) a körlevélkészítést a MailMerge-vel valami módon?
Természetesen. A legegyszerűbb, ha az excel vba referenciáihoz hozzáadod a "Microsoft Word x.y Object Library"-t. Ez után már használhatod pl. így(vilag #1472-es hozzászólása alapján):
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")
With wrdApp
.Visible = True 'látszik a word alkalmazás
Set wrdDoc = .Documents.Open(".doc fájl neve") 'megnyitja a word documentumot
.ActiveDocument.MailMerge.MainDocumentType = Word.wdFormLetters
.ActiveDocument.MailMerge.OpenDataSource Name:=".xls fájl neve", _
LinkToSource:=True, _
Format:=Word.WdOpenFormat.wdOpenFormatAuto, _
Connection:="Munka1$", _
SQLStatement:="SELECT * FROM `Munka1$`"
With .ActiveDocument.MailMerge
.Destination = Word.wdSendToPrinter
.SuppressBlankLines = False
With .DataSource
.FirstRecord = 14
.LastRecord = ig2 'saját változó
End With
.Execute Pause:=False 'Mailmerge futtatása
End With
End With
'wrdDoc.Close 'documentum bezárása
'wrdApp.Quit 'word bezárása
'takarítás
'Set wrdApp = Nothing
'Set wrdDoc = Nothing -
#90999040
törölt tag
Bocs, de nekem ez nem eléggé világos (ez mondjuk az én hibám). Megtennéd, hogy részletezed kicsit?
Elmondanád, hogy a fenti problémát hogyan oldanád meg ezzel a módszerrel?
Mert ugyan most működik, de ha lehet akkor egyszerűsítek rajta, plusz a módszer ismerete biztosan nem fog káromra válni.Köszi!
Ha az Excel VBA Tools >> References résznél hozzáadod a Microsoft Word x.y Object Library-t, akkor használhatod a Word objectumait.
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Add
'wrdDoc.Close
'wrdApp.QuitEz Excelből elindít egy word alkalmazást, hozzáad egy dokumentumot, és ha az utolsó 2 sor elejéről kiveszed az aposztrofokat, akkor be is zárja.
Persze lehetne a referencia hozzáadása nélkül is, akkor viszont a Word.Application és a Word.Document helyett Object-eket kellene írni.Természetesen a word-ből is lehet az excel objektumait használni.
Csak mint írtam, ekkor alapból nem "ismerik fel" a másik alkalmazás konstansait. ezért kell ezeket külön definiálni, mert különben teljesen mást csinál a kód, mint amit szeretnénk...
-
#90999040
törölt tag
Hali!
Megoldódott a probléma!

A kód (ezt kell a kívánt Word doksiba, vagyis a célfájlba írni):
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource _
Name:="xyz", _ 'forrásfájl helye
LinkToSource:=True, _
Format:=wdOpenFormatAuto, _
Connection:="Munka1$", _
SQLStatement:="SELECT * FROM `Munka1$`"
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = False
With .DataSource
.FirstRecord = 14
.LastRecord = ig2 'saját változó
End With
.Execute Pause:=False
End WithNeház szülés volt, de meglett!!!

ezt kell a kívánt Word doksiba, vagyis a célfájlba írni
Ha a Word konstansait definiálod az Excelben, akkor Excelben is használható.
Az Excel ugyanis alapból nem tudja a Word konstansait. Pl.:Const wdSendToPrinter = 1
Ezeket az értékeket meg tudod nézni Wordben úgy, hogy kiiratod őket. Pl.:
Debug.Print wdSendToPrinter
-
#90999040
törölt tag
A win1.exe-t megtalálod a c:\......\win1\win1\Bin\Debug mappában, amennyiben "win1" a projekt neve. De külön is le tudod fordítani a Build -> Build Solutionnal.
-
#90999040
törölt tag
Szeretném lecserélni, de Sajna a VB studio 2008hoz (meg máshoz se) nem értek

Elindítom a prpgramot, és New Project- de ott kidob több dolgot is.
Itt meiket kell kiválasztanom? próbáltam úgy hogy ezekközüll kiválasztottam egyet, és ott adtam hozzá modult, s abban szerettem volna írni, de különböző projecteknél különböző hiba.
-bár mikor Formot inítottam, ott nem írt ki hibát a program (modulban), de hiába töröltem a formot, futtatásnál mégis előhozott egy üres ablakot.Elindítod a Vs 2008-at.
File -> New -> Project...
A megjelenő ablakban létrehozol egy Forms projektet.
Project -> Add Module...
A létrehozott modulba bemásolod a kódodat, majd megcsinálod vele, amiket előzőleg írtam.
A modulba ezután beleteszed ezt:Sub Main()
TEST()
End SubHa ez megvan, akkor Solution Explorer ablakban*** dupla katt a "My project"-re.
Itt az Application fülön az "Enable Application Framework" elől a pipát kiveszed.
Ugyanezen a fülön "Startup Object"-nél a "Sub Main"-t választod ki.
Ha mindent jól csináltál, akkor F5-re indulnia is kellene a programnak.***: ha nem látszik ez az ablak, akkor View -> Solution Explorer
-
#90999040
törölt tag
Közvetlenül nem, kell írni hozzá egy COM Wrappert (legyen akár natív, akár .NET assembly). Pár dologra még oda kell figyelni a wrappelésnél, pl. struct nem használható. Ha valaminek a visszatérési vagy bemeneti értéke struct, akkor azt vagy szét kell szedni a com hívásban, vagy be kell csomagolni egy osztályba (és a wrapperben kibontani).
Oly: Lehet, hogy segít...
AE
Igen így már lehet...
-
#90999040
törölt tag
Sziasztok!
.bas to .exe Hogy?
Microsoft Excel-ben /Makro/ Visual Basic Szerkesztő-ben írtam egy "modult" -vagy mit,
mely LPT portot vezérel. (Sokat szenvedtem vele
)
Ezt a "programot" szeretném, excel nélküli, önnáló, futtatható állományként elmenteni.
Excel (Visual basic szerkesztő) csak .bas kiterjesztést enged.
iexpress-el próbáltam, de ott csak a háttérben fut le valami. (nem hiszem h az én progim, mert az adatbekéréssel kezdődik...)
Már letöltöttem a Visual Basic 2008+Visual C Sharp progrot, de oda hiába másolom be amit írtam, futtatásná hibát ír ki. (már ha tudom futtatni ...)Hogy tudom, a .bas kiterjesztést .exe ként menteni? -vagy hogy tudom a fájlt Visual Basic 2008 vagy Visual C Sharp-ban működésre bírni?
(esetleg extra lenne, ha a io.dll-fájlt nem kéne külön (ez kell a progihoz) bemásolnom system32-be hanem magával hordozná, vagy automatice bemásolná...-de ez tényleg csak extra..)
Válaszokat előre is köszönöm!A megírt cucc ez lenne:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As ByteSub TEST()
Dim x As Long
Dim y As Long
Dim v As Long
Dim c As Long
kezdes:
v = InputBox("Válasszon az alábbi lehetősékeg közüll" & Chr(13) & Chr(10) & "1- 6 számjegyű számláló" & Chr(13) & Chr(10) & "2- 7 számjegyű számláló")If v = 1 Then GoTo sz1
If v = 2 Then GoTo sz2
If v <> 1 Or 2 Then GoTo kezdessz1:
v = InputBox("Válasszon az alábbi lehetősékeg közüll" & Chr(13) & Chr(10) & "1- Egy megadott értéket bepörget" & Chr(13) & Chr(10) & "2- A megadott értéktől, egy megadott értékig pörget")If v = 1 Then GoTo elso1
If v = 2 Then GoTo masodik1
If v <> 1 Or 2 Then GoTo sz1elso1:
x = InputBox("Írja be a bepörgetni kívánt értéket!")
For i = 1 To x
Call PortOut(888, 1)
Sleep 500
Call PortOut(888, 0)
Sleep 500
Next
GoTo vegemasodik1:
x = InputBox("Írja be a jelenlegi számlálóállást!")
y = InputBox("Írja be az elérni kívánt számlálóállást")
c = (y - x)
If (x > y) Then c = ((999999 - x) + 1 + y)
For i = 1 To c
Call PortOut(888, 1)
Sleep 500
Call PortOut(888, 0)
Sleep 500
Next
MsgBox (c)
GoTo vegesz2:
v = InputBox("Válasszon az alábbi lehetősékeg közüll" & Chr(13) & Chr(10) & "1- Egy megadott értéket bepörget" & Chr(13) & Chr(10) & "2- A megadott értéktől, egy megadott értékig pörget")If v = 1 Then GoTo elso2
If v = 2 Then GoTo masodik2
If v <> 1 Or 2 Then GoTo sz1elso2:
x = InputBox("Írja be a bepörgetni kívánt értéket!")
For i = 1 To x
Call PortOut(888, 1)
Sleep 500
Call PortOut(888, 0)
Sleep 500
Next
GoTo vegemasodik2:
x = InputBox("Írja be a jelenlegi számlálóállást!")
y = InputBox("Írja be az elérni kívánt számlálóállást")
c = (y - x)
If (x > y) Then c = ((9999999 - x) + 1 + y)
For i = 1 To c
Call PortOut(888, 1)
Sleep 500
Call PortOut(888, 0)
Sleep 500
Next
MsgBox (c)
GoTo vegevege:
MsgBox ("SZÁMLÁLÓ BEÁLLÍTVA" & Chr(13) & Chr(10) & "TOVÁBBI JÓ MUNKÁT!")
End SubVisual Basic 2008-ra javaslom a következőket:
A Long-okat cseréld le Integer-re.
Az inputboxokat pedig módosítsd így:
v = Integer.Parse(InputBox("Válasszon az alábbi lehetősékeg közüll" & Chr(13) & Chr(10) & "1- 6 számjegyű számláló" & Chr(13) & Chr(10) & "2- 7 számjegyű számláló"))Az Integer.Parse() (vagy más konverziós függvény) azért kell, mert Vb.net-ben az inputbox stringet ad vissza.
-
#90999040
törölt tag
Szia!
Javaslom neked a vbscriptet. Az 95%-ban kompatibils az office makróval.
Azaz a kódodat másold át notepad-be, majd mentsd le .vbs néven.
Ezt command line-ból cscript valami.vbs néven fogod tudni futtatni.Debugolni pedig cscript //X //D valami.vbs-ként fogod tudni, ha mégsem menne egy az egyben vbs-ként.
Javaslom neked a vbscriptet.
Vbscriptben Windows API függvény???

-
#90999040
törölt tag
Ez így tökéletesen működik:
Class RelStore
'Cache Time 5 min
Private d_Timer
Private b_Member
Private b_Init
Private VALIDITY
Private Sub Class_Initialize
VALIDITY = 300
d_Timer = 0
b_Member = False
b_Init = False
End Sub
Public Function Initialize(Membership)
d_Timer = Timer
b_Member = Membership
b_Init = True
End Function
Public Sub Invalidate()
Class_Initialize
End Sub
Public Function IsMember()
IsMember = b_Member
End Function
Public Function IsValid()
IsValid = (b_Init AND ((Timer > d_Timer + VALIDITY) OR (Timer < d_Timer)))
End Function
End Class
Set rs = new RelStore
DebugWrite rs.isvalidSzerintem ez: htCache(SearchString) nem RelStore classt ad vissza.
-
#90999040
törölt tag
Gyors VBScript kérdés...
Csináltam egy kicsi osztályt (alant), és egy Hastable-be bepakolom (tudom talán kicsit meredek). A problémám az, hogy az egyik függvényt nem hajlandó meghívni a futtatókörnyezet...
Osztály:
Class RelStore
'Cache Time 5 min
Private d_Timer
Private b_Member
Private b_Init
Private VALIDITY
Private Sub Class_Initialize
VALIDITY = 300
d_Timer = 0
b_Member = False
b_Init = False
End Sub
Public Function Initialize(Membership)
d_Timer = Timer
b_Member = Membership
b_Init = True
End Function
Public Sub Invalidate()
Class_Initialize
End Sub
Public Function IsMember()
IsMember = b_Member
End Function
Public Function IsValid()
IsValid = (b_Init AND ((Timer > d_Timer + VALIDITY) OR (Timer < d_Timer)))
End Function
End ClassAhol kicsomagolnám a Hastable-ből:
If htCache.ContainsKey(SearchString) Then
Set rs = htCache(SearchString)
If rs.IsValid Then
IsMember = rs.IsMember
Else
IsMember = False
htCache.Remove SearchString
End If
Else
DebugWrite "Object NOT found in cache: " & SearchString
End IfHibaüzenet:
An error occurred on line 97 while executing script 'User Group Check'
Source: Microsoft VBScript runtime error
Description: Object doesn't support this property or method: 'rs.IsValid'Ja és próbáltam már így is
Public Property Get IsValid
IsValid = (b_Init AND ((Timer > d_Timer + VALIDITY) OR (Timer < d_Timer)))
End PropertyAE
Ja és próbáltam már így is
Valószínűleg nem az IsValid()-el van probléma, hanem hogy a htCache(SearchString) nem megfelelő típust vagy esetleg Nothing-ot ad vissza. Első lépésben vizsgálnám Nothing-ra:
if (rs is Nothing) then
'ide pl. valami kiiratás
End If -
#90999040
törölt tag
Sziasztok! VB6-tal kapcsolatban lenne kérdésem. Szeretnék számokat sorba rendezni. Van egy listám(list1), amihez egy gomb segítségével véletlen számokat adok. Egy másik gombbal pedig szeretném növekvő sorrendbe rendezni őket. Arra gondoltam, hogy páronként összehasonlítom az elemeket és az elem indexét kicserélem. Az elméleti megoldásom, hogy egy változóba eltárolom a lista elemek értékét, és ezt egy ciklussal léptetem a listavégig. Egy másik változó lenne az indexek, ami szintén egy ciklusban futna. Ha a k-dik elem kisebb, mint a k+1-dik, akkor a k-dik elem indexe legyen 0. A problémám az, hogy nem tudom összekapcsolni az elem értékét és az indexét. De vhogy sehogy sem akar működni. Tudna vki küldeni programkódot, vagy van vmi egyszerűbb megoldás? Előre is köszönöm.

Ha csak 1-szerű sorbarendezést szeretnél:
Private Sub Command2_Click()
Dim rendezendoe As Boolean
Dim szamlalo As Integer
Dim temp As String
Do
rendezendoe = False
For szamlalo = 0 To List1.ListCount - 2
If (List1.List(szamlalo) > List1.List(szamlalo + 1)) Then
rendezendoe = True
temp = List1.List(szamlalo)
List1.List(szamlalo) = List1.List(szamlalo + 1)
List1.List(szamlalo + 1) = temp
End If
Next
Loop Until rendezendoe = False
End Sub -
#90999040
törölt tag
-
#90999040
törölt tag
Vagy:
1. Eszközök >> Makró >> Visual Basic Editor (ill. ALT+F11)
2. A megjelenő ablakban: Insert >> UserForm
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Garanciális samsung galaxy watch 8 classic
- Samsung QVO 870 SSD (1 TB) 100/100%
- Új, bontatlan - Apple MacBook Air 13 M4 16/256GB - Sky Blue
- Új Dobozos ASUS VivoBook Go 15 Laptop 15,6" -20% Ryzen 5 7520U 16/512 Radeon Graphics FHD OLED
- Új HP ZBook Firefly 16 G10 Profi Tervező Vágó Laptop -50% i7-1355U 16/1TB FHD+ RTX A500 4GB
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- Bomba ár! HP EliteBook 845 G9 - Ryzen 5 6650U I 16GB I 512SSD I 14,1" FHD+ I Cam I W11 I Gari!
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- ASTRO A50 WIRELESS HEADSET + BASE STATION 4th gen. fejhallgató
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
Állásajánlatok
Cég: aiMotive Kft.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest









