Hirdetés
- Redmi Note 15 4G? Van képünk hozzá!
- Mobil flották
- iPhone topik
- Amazfit Bip 6 - jót olcsón
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
- Vivo X200 Pro - a kétszázát!
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Fotók, videók mobillal
- Milyen okostelefont vegyek?
- Szemtelenül olcsó lett a Nubia Fold
Új hozzászólás Aktív témák
-
#90999040
törölt tag
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
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
válasz
öcsi-bácsi
#1491
üzenetére
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
válasz
öcsi-bácsi
#1488
üzenetére
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
válasz
Cpt. Flint
#1486
üzenetére
É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
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
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
válasz
Zsargon89
#1444
üzenetére
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
válasz
Zsargon89
#1424
üzenetére
Visual 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
válasz
ArchElf
#1421
üzenetére
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
-
#90999040
törölt tag
válasz
dani850430
#1364
üzenetére
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
Új hozzászólás Aktív témák
- ASUS ROG Ally
- Redmi Note 15 4G? Van képünk hozzá!
- Éjszakai műszak
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Mobil flották
- Az Intel korábbi vezére szerint a kvantumforradalom gyorsan elsöpri a GPU-kat
- Milyen videókártyát?
- Xbox Series X|S
- Debrecen és környéke adok-veszek-beszélgetek
- PlayStation 5
- További aktív témák...
- Bomba ár! Lenovo X1 Yoga 1st - i7-6G I 8GB I 256SSD I 14" WQHD Sérült I HDMI I W10 I CAM I Garancia
- Xiaomi Redmi Note 13 512GB, Kártyafüggetlen, 1 Év Garanciával
- Nikon D3500, Tükörreflexes (DSLR) fényképező
- Telefon felvásárlás!! Samsung Galaxy Note 10+/Samsung Galaxy Note 20/Samsung Galaxy Note 20 Ultra
- BESZÁMÍTÁS! Gigabyte B650 R7 7700 32GB DDR5 1TB SSD RTX 4070 Ti 12GB Asus TUF Gaming GT 501 750W
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest




