- Android alkalmazások - szoftver kibeszélő topik
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Xiaomi 15 - kicsi telefon nagy energiával
- iPhone topik
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
- Fotók, videók mobillal
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Honor 400 Pro - gép a képben
- Apple iPhone 16 Pro - rutinvizsga
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
-
Mobilarena
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
Topikgazda
válasz
the radish #53693 üzenetére
Szia!
Be kell tenni még egy ciklust, pl. így:Sub vba_concatenate()
Dim rng As Range
Dim i As String
Dim SourceRange As Range
Dim x As Integer
For x = 1 To 50
Set SourceRange = Range("I" & x & ":O" & x)
For Each rng In SourceRange
i = i & rng
'& ""
Next rng
Range("R" & x).Value = Trim(i)
Next
End Sub
De mutatok egy másik módszert is:Sub concat()
Dim SourceRange As Range, rowrange As Range
Set SourceRange = Range("I1:O50")
For Each rowrange In SourceRange.Rows
Cells(rowrange.Row, "R").Value = Join(Application.Transpose(Application.Transpose(rowrange.Value)), ";")
Next
End Sub
Itt csak a forrástartományt és a cél oszlopot kell megadnod. A Join függvény második paramétere az elválasztó, ezt veheted "" (nullstring) értéknek is.
Üdv.
Ps. Azt, hogyan jelennek meg a sorok, a szerkesztőprogram kénye-kedve dönti el. -
Fferi50
Topikgazda
válasz
the radish #52377 üzenetére
Szia!
Még annyit az előző makrókhoz, hogy a 4 jegyű irányítószám + vessző + egy szóköz miatt az első makróban Mid(cl.value,7) kell, a második makróban pedig Replace(A1,1,6,"""").
Sajnos nem számoltam utána, közben jutott eszembe.
Üdv. -
Fferi50
Topikgazda
válasz
the radish #52377 üzenetére
Szia!
Nincs mese, akkor bonyolultabb egy nagyon picit:Sub cserelo1()
Dim cl As Range
For Each cl In Range("A1:A30000")
cl.Value = Mid(cl.Value, 5)
Next
End Sub
Sajnos végig kell menni cellánként.
Vagy segédoszlop kell hozzá (itt a B oszlop):Sub cserelo2()
With Range("B1:B30000")
.Formula = "= Replace(A1, 1, 5, """")"
.Offset(0, -1).Value = .Value
.Clear
End With
'B helyére írd a saját segédoszlopod. A makró után a segédoszlop üres lesz.
End Sub
Üdv. -
the radish
senior tag
válasz
the radish #52376 üzenetére
Range("A1:A30000") = Left(Range("A1"), 5)
Eredmény: 3300 (az "Eger" tűnt el)Range("A1:A30000").Replace What:="????,?", Replacement:=""
Ez valóban jó lenne, de írtad is bukót, van, ahol található még vessző és onnan is levág -4 karaktert -
Fferi50
Topikgazda
válasz
the radish #52372 üzenetére
Szia!
Próbáld így:Range("A1:A30000").Replace What:="?????", Replacement:=""
Üdv. -
Delila_1
veterán
válasz
the radish #52372 üzenetére
Range("A1:A30000") = Left(Range("A1"), 5)
-
spe88
senior tag
válasz
the radish #50000 üzenetére
Sziasztok!
Tömbképletet akarok használni, de a HA fv.-nél elakad. Nem tudja értelmezni, hogy csak az üresekre szűrjön. Ezt, hogy lehet kikerülni?
Köszönöm
HAHIBA(INDEX($AQ$56:$AQ$86;KICSI(HA($AQ$56:$AQ$86<>"");SOR($AQ$56:$AQ$86)-SOR(AQ55);"");s56));"")
-
Fferi50
Topikgazda
válasz
the radish #50028 üzenetére
Szia!
Nos nálam ebben a verzióban sem csinálja így a 365.
Üdv. -
Fferi50
Topikgazda
válasz
the radish #50026 üzenetére
Szia!
Tudom, nem vígasztal, de nálam nem jön elő ez a probléma 365-ben. Talán valami más beállítás - ami az egérmutató formáját vezérli - a Windows-ban lehet a ludas, mert az Excel beállításnál nem találtam ilyet.
Jól gondolom, hogy adatérvényesítéssel áll elő a lista?
Üdv. -
Fferi50
Topikgazda
válasz
the radish #50019 üzenetére
Szia!
Ez sajnos egy erős BUG a legújabb Excel verziókban. Nem tudom, szóvá tette-e valaki a MS oldalán. Valahány fájlt megnyit, mind ottmarad a VBA oldalon, de egyébként ha "megkérdezed" hány munkafüzet van nyitva, akkor 0 a válasz. Viszont úgy tűnik, a memóriát azért foglalja, sőt el is tud indulni a benne levő makró - csak épp hiba vagy összeomlás a vége. Csak a bezárás és újranyitás segít sajnos.
Jelenteni kell a MS felé.
Üdv. -
Fferi50
Topikgazda
válasz
the radish #50000 üzenetére
Szia!
Képletet összefüggő tartományra meg lehet adni egy lépésben:
Pl.Range("O1:O" & usor).FormulaLocal="=HAHIBA(INDEX(C$1:C$20000;$N1);"""")
Érték másolás önmagára akkor kell, ha nem szeretnéd a képletet megtartani.
Üdv. -
Fferi50
Topikgazda
válasz
the radish #49995 üzenetére
Szia!
A létrehozás dátumát a rendszer hozza létre, ahhoz nem lehet "normálisan" hozzányúlni szerintem.
Üdv. -
the radish
senior tag
válasz
the radish #49994 üzenetére
Az megint kimaradt az infóból, hogy az excel hozza létre a txt fájlt. (Hátha lényeges)
-
Delila_1
veterán
válasz
the radish #49992 üzenetére
Set adatfile = FSO.GetFile("útvonal\fájlnév kiterjesztéssel")
A létrehozás dátumát az adatfile.DateCreated adja meg. -
Fferi50
Topikgazda
válasz
the radish #49990 üzenetére
Szia!
Mire gondolsz?
A fájl nevébe beleteheted szöveges formában a létrehozás dátumát és időpontját is.
Üdv. -
Delila_1
veterán
válasz
the radish #49988 üzenetére
Szívesen.
-
Delila_1
veterán
válasz
the radish #49986 üzenetére
Valamit elronthattál, nálam terv szerint működik.
Nem hívja meg esetleg a Makro1 a Makro2-t? -
Delila_1
veterán
válasz
the radish #49984 üzenetére
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" Then Call Makro1
If Target.Address = "$A$2" Then Call Makro2
Application.EnableEvents = True
End Sub -
the radish
senior tag
válasz
the radish #49940 üzenetére
Bocsánat, megoldva, pontosabban csak elfelejtettem a megoldást.
-
Fferi50
Topikgazda
válasz
the radish #49936 üzenetére
Szia!
Állitsd a számításokat manuálisra:Application.Calculation=xlCalculationManual
A visszaállítás:Application.Calculation=xlCalculationAutomatic
Viszont ha a makró a számított értékeket is figyelembe veszi valahol, akkor hamis lehet a végeredmény. -
lappy
őstag
válasz
the radish #49882 üzenetére
ismétlődések eltávolítása
-
Fferi50
Topikgazda
válasz
the radish #49852 üzenetére
Szia!
Talán a legegyszerűbb:usor=Cells(Rows.Count,1).End(xlup).Row
With Range("B1:B" & usor)
.Formula="=Timevalue(A1)"
.Value=.Value
' .NumberFormat="hh:mm:ss" ' ha formázottan szeretnéd látni akkor vedd ki a sor elejéről az aposztrofot
End With
Üdv. -
the radish
senior tag
válasz
the radish #49771 üzenetére
Sziasztok,
Közben a "replace" segítségével sikerül egy makrót összehozni, viszont szeretném valahogy az esetenként előforduló irányítószámokat is likvidálni. Ehhez az összes 4 jegyű számot fel kéne deríteni, de nem jövök rá, hogy ezt milyen módon kéne kéne megadnom a makróban.
Javaslatotokat előre is köszönöm! -
válasz
the radish #49506 üzenetére
-
Fferi50
Topikgazda
válasz
the radish #48580 üzenetére
Szia!
Ha a nyitókészlet is minden nap rögzítésre kerül az előző napi zárónak megfelelően - a mintából legalábbis így látszik - , feltételezve, hogy a forrás sorba van rendezve, akkor INDEX - HOL.VAN függvénnyel meg lehet oldani. Kell egy segédoszlop, amibe összefűzzük a termék - dátum oszlopot.
A keresésnél erre az összefűzött értékre keresünk rá, a következő napi dátum értékből kivonjuk a tárgynapi értéket.
Változás C2 cella képlete, ami lefelé húzható:=INDEX(Forrás!D1 : Dx;HOL.VAN(A2&B3;Összefűzött oszlop;0))-INDEX(Forrás!D1 : Dx;HOL.VAN(A2&B2;Összefűzött oszlop;0))
Arra figyelni kell, hogy az összefűzés után a keresendő érték és az összefűzött oszlop is szöveg legyen.
Remélem, valami hasonlóra gondoltál.
Üdv. -
Pakliman
tag
válasz
the radish #46659 üzenetére
Szia!
Egy kis módosítás kell:
Dim wb As Workbook
If sFile <> "" Then
Set wb = Workbooks.Open(sFile) ' Open the Excel file.
'...
'Másolás a wb.Worksheets("munkalapnév").cells(sor,oszlop)....
'Végül:wb.Close SaveChanges:=False
End If
-
Delila_1
veterán
válasz
the radish #46623 üzenetére
Adj feltételes formázást az M2: P... tartományra.
A formázás képlete:=DARABTELI($A:$A;$M2)=0
Mikor látod a megadott formátumot, indíthatod a másolós makrót. -
Delila_1
veterán
válasz
the radish #46621 üzenetére
Szívesen.
-
Delila_1
veterán
válasz
the radish #46619 üzenetére
Ímé:
Sub SorMasolas()
Dim ide As Long, sor As Long
ide = Range("A" & Rows.Count).End(xlUp).Row + 1
sor = 2
Do While Cells(sor, "M") <> ""
If Application.WorksheetFunction.CountIf(Columns(2), Cells(sor, "N")) = 0 Then
Range("M" & sor & ":P" & sor).Copy Range("A" & ide)
ide = ide + 1
End If
sor = sor + 1
Loop
End Sub
-
Fferi50
Topikgazda
válasz
the radish #46606 üzenetére
Szia!
Szerintem ezt az Excel saját kénye-kedvére jeleníti meg....
Üdv. -
Fferi50
Topikgazda
válasz
the radish #46604 üzenetére
Szia!
Worksheets(1).ShowDataForm
Üdv. -
Fferi50
Topikgazda
válasz
the radish #45196 üzenetére
Szia!
A konstansnak nem adhatsz változó tartalmat pl. cellaértéket sem, a deklaráláskor pontosan meg kell adni az értékét.
Ha változó értékeket szeretnél, akkor valódi változót kell használnod és pl. a Workbook_Open eseményben beolvasni az értékét - vagy az adott makróban, mielőtt használni kezdenéd.
Üdv. -
zsolti_20
senior tag
válasz
the radish #45193 üzenetére
Kicsit utana olvastam, probaltam tesztelni, de azt irjak hogy ilyen formaban megoldani nem lehet. Erre egy valtozo kell csinalnod.
De az en tudasom is meg all itt. Majd a tobbiek kisegitenek. -
zsolti_20
senior tag
válasz
the radish #45193 üzenetére
Public Const burnKey = Worksheets("KEY").Cells(1).Value
-
zsolti_20
senior tag
válasz
the radish #45189 üzenetére
Szia,
Esetleg probald meg ezt:
Sub lol()
var1 = Worksheets("Sheet2").Cells(1).Value
MsgBox var1
End Sub
-
Fferi50
Topikgazda
válasz
the radish #45183 üzenetére
Szia!
Mi van az eseménykezeléssel? Le van tiltva?
Megmutatnád azt a kódrészletet, amelynél ez bekövetkezik?
Üdv. -
válasz
the radish #45173 üzenetére
Private Sub CommandButton1_Click()
Dim MyFilename As String
Dim MyWorkBook As Workbook
'Excel fájl útvonala
MyFilename = "D:\gyumolcs.xls"
'Megnyitjuk
Set MyWorkBook = Workbooks.Open(MyFilename)
'A megnyitott munkafüzet "Munka1" nevü munkalapjáról
'beolvassuk az "A1" cella tartalmát és
'nagybetű-helyesen értelmezzük.
'Így mindegy, hogy a cellában hogy szerepel, "Alma" vagy "ALMA" vagy "alma" stb stb.
Select Case UCase(MyWorkBook.Sheets("Munka1").Range("A1"))
Case "ALMA"
Call alma
Case "KÖRTE"
Call korte
Case "SZILVA"
Call szilva
'ha bármi más szerepel a cellában vagy üres,
'akkor figyelmeztető ablak, majd bezárjuk a munkafüzetet
Case Else
MsgBox ("A(z) " + MyFilename + " munkafüzet be lesz zárva.")
MyWorkBook.Close
End Select
Set MyWorkBook = Nothing
End Sub
Private Sub alma()
MsgBox ("Alma makró")
End Sub
Private Sub korte()
MsgBox ("Körte makró")
End Sub
Private Sub szilva()
MsgBox ("Szilva makró")
End Sub -
Fferi50
Topikgazda
válasz
the radish #41120 üzenetére
Szia!
Ha lehet makrót használnod, akkor a következő felhasználói függvény segít:
Function jaras(cl As Range) As String
jaras = Left(cl.Value, InStrRev(Left(cl.Value, InStr(cl.Value, "járás")), ",") - 1)
End Function
Ezt egy modullapra kell bevinned. Használata mint az Excel függvényeké, pl. =jaras(A1)
Ha mind megvan, akkor kijelölöd - másolás - irányított beillesztés - értéket. Így eltűnnek a képletek.
Utána akár ki is törölheted a modullapot.Üdv.
-
Delila_1
veterán
válasz
the radish #41122 üzenetére
Szívesen.
-
Delila_1
veterán
válasz
the radish #41120 üzenetére
Kijelölöd az A oszlopot, az Adatok | Szövegből oszlopok menüponttal szétválasztod az adatokat, ahol a határoló jel legyen vessző. Ezután egy üres oszlopban összefűzöd a szükséges cellákat.
=A2 & ", " & B1 & ", " & C1
Másolod a képletet tartalmazó oszlopot, majd irányítottan, értékként beilleszted az egy új oszlopba.
Ezzel "csak" az a baj, hogy nem következetesen vannak az adatok az egyes sorokban, nem egységesen mindenhol a 4. adat a járás. Kiss Jenőnél a 2. helyen van. Ezeket egyenként kell javítani. Ha nem lennének ezek az anomáliák, az irányított beillesztés történhetne azonnal az eredeti adatok helyére.
-
Delila_1
veterán
válasz
the radish #41117 üzenetére
A B1 cella képlete
=BAL(A1;SZÖVEG.KERES("járás";A1)+4)
-
the radish
senior tag
válasz
the radish #41095 üzenetére
Sikerült megoldani:
Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
Dim lRow As Long
Dim iCntr As Long
lRow = 100000
For iCntr = lRow To 1 Step -1
If Cells(iCntr, 1).Value = "SZUM" Then
Rows(iCntr).Delete
End If
Next
End Sub -
lappy
őstag
válasz
the radish #37725 üzenetére
-
total90
veterán
válasz
the radish #37725 üzenetére
Szia,
szerintem ilyen nem lehetséges
-
Fferi50
Topikgazda
válasz
the radish #37304 üzenetére
Szia!
Fontos apróságok:
valtozo$=Range ("C1")
A C1 cella értékét teszi a valtozo$ nevű változóba!
Ha ez nem felel meg a Range meghatározás szabályainak, akkor hibát okoz.
Ha a C1 cella tartalmazza a kijelölés végének a címét, akkor Delila megoldása jó.Ha magát a cellát, mint objektumot szeretnéd a változóba tenni, akkor
set valtoz=Range("C1")
Ebben az esetben a helyes kijelölés:
Range("A1",valtoz).Select
Üdv.
-
Delila_1
veterán
válasz
the radish #37304 üzenetére
Nincs mit.
-
Delila_1
veterán
válasz
the radish #37302 üzenetére
Range("A1:" & Range("C1").value).Select
-
föccer
nagyúr
válasz
the radish #36857 üzenetére
SZUMHATÖBB kell neked. Több kritériumot is meg lehet neki adni.
üdv, föccer
-
Fferi50
Topikgazda
válasz
the radish #36629 üzenetére
Szia!
Arra van lehetőség, hogy a futásidejű hibák ne okozzanak leállást, illetve korrigálhatók legyenek. Nézz utána az On Error Goto ill. az On Error Resume utasításoknak a Help-ben.
Üdv.
-
Pakliman
tag
válasz
the radish #35165 üzenetére
Szia!
Ezt "kényszerből" írtam, mert sokszor volt/van szükségem darabolásra.
Használható cellában és makróban egyaránt.Public Function Darabolt(darabolandó, rész As Long, Optional elválasztó As String = " ", Optional elválasztó_egyben_használandó As Boolean = True, Optional trim As Boolean = True) As String
Dim delim
Dim s
Dim i As Long
s = IIf(trim, Application.Trim(darabolandó), darabolandó)
If elválasztó_egyben_használandó Then
delim = elválasztó
Else
delim = Mid(elválasztó, 1, 1)
For i = 2 To Len(elválasztó)
s = Replace(s, Mid(elválasztó, i, 1), delim)
Next i
End If
On Error GoTo Hiba
Darabolt = Split(s, delim)(rész - 1)
Exit Function
Hiba:
Darabolt = ""
End FunctionHasználata:
darabolandó= "dara bolandó napok"
rész= lásd eredményeknél
elválasztó= " n" 'ha nem adod meg, akkor 1 db szóköz
' elválasztó_egyben_használandó= ha nem adod meg, akkor IGAZ
' trim= ha nem adod meg, akkor IGAZ
elválasztó_egyben_használandó= HAMIS (=a szóköz is és az n is elválasztóként használandó)
trim= HAMIS (=feldolgozás előtt a dupla/tripla stb szóközöket NEM cseréli 1 db szóközre)
eredmény rész=1 --> "dara"
eredmény rész=2 --> ""
eredmény rész=3 --> ""
eredmény rész=4 --> ""
eredmény rész=5 --> ""
eredmény rész=6 --> "bola"
eredmény rész=7 --> "dó"
eredmény rész=8 --> ""
eredmény rész=8 --> "apok"
'-------------------------------------------------
darabolandó= "dara bolandó napok"
elválasztó= " n"
elválasztó_egyben_használandó= IGAZ (=KIZÁRÓLAG a " n" sztring az elválasztó!!)
trim= IGAZ (=feldolgozás előtt a dupla/tripla stb szóközöket kicseréli 1 db szóközre)
eredmény rész=1 --> "dara bolandó"
eredmény rész=2 --> "apok" -
Fferi50
Topikgazda
válasz
the radish #35167 üzenetére
Szia!
A Chr(34) jelenti az idézőjel karaktert. Ilyen esetekben egyszerűbb ezen a módon használni (néha nem is lehet másként).
Egyébként duplázni kell az idézőjeleket, hogy egy szövegben (stringben) idézőjelként maradjon benn és ne szöveghatárolóként.
Ha azt szeretnéd, hogy az idézőjel is benne maradjon a szövegben, akkor a +1 részt ki kell törölni.Üdv.
-
Fferi50
Topikgazda
válasz
the radish #35165 üzenetére
Szia!
Dim cl as range
For Each cl In Range("A1:A250").Cells: cl.Value = Mid(cl.Value, InStr(cl.Value, Chr(34)) + 1): NextÜdv.
-
lappy
őstag
válasz
the radish #35160 üzenetére
Sub RemoveAllButLastWord()
'Updateby20140612
Dim Rng As Range
Dim WorkRng As Range
Dim xChar As String
On Error Resume Next
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xChar = Application.InputBox("String", xTitleId, "", Type:=2)
For Each Rng In WorkRng
xValue = Rng.Value
Rng.Value = VBA.Right(xValue, VBA.Len(xValue) - VBA.InStrRev(xValue, xChar))
Next
End Sub
pl -
Fferi50
Topikgazda
válasz
the radish #35160 üzenetére
Szia!
Makróval
Range("A1:A250").Replace What:="alma",Replacement:="",lookAt:=xlPart
Ugyanez az idézőjelre:
Range("A1:A250").Replace What:=Chr(34),Replacement:="", lookAt:=xlPartDe a Keresés - Csere párbeszédpanelben ugyanezt meg tudod csinálni, ha kijelölöd a tartományt.
Arra kell figyelni, hogy ez a párbeszédpanel megőrzi az előző keresési beállításokat! (vagyis azt, hogy miben keressen, egész cellát nézzen-e stb.)
Üdv.
-
Fferi50
Topikgazda
válasz
the radish #33736 üzenetére
Szia!
Sub masolos()
Dim sor As Integer
For sor = 1 To 160
Range("A" & sor & ":B" & sor).Copy Destination:=Range("x" & sor)
Application.Wait Now + TimeSerial(0, 0, 3)
DoEvents
Next
End SubA Range("x" & sor) helyére írd a célcella címét.
Üdv.
-
lappy
őstag
válasz
the radish #33736 üzenetére
WaitTime = Now() + TimeValue("00:01:00")
While Now() < WaitTime
DoEvents
Wenda késleltető tag
-
Fferi50
Topikgazda
válasz
the radish #31213 üzenetére
Szia!
Beleklikkre nem találtam megoldást, de egérmutató rávitele esetére az alábbi kis makró - amit a Textbox1 megfelelő eseménykezelőjébe írtam, aktiválja a Textbox1 -et és "bekékíti" a teljes szöveget - azaz gépelés elkezdésekor törlődik a benne levő szöveg.
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Me.ActiveControl.Name <> "TextBox1" Then
TextBox1.SetFocus
Application.SendKeys "+({TAB})"
Application.SendKeys "{TAB}"
'Textbox1.Text="" 'is kitörli a szöveget, ha fölé viszed az egérmutatót, akkor nem kell az előző két sor (nyilván véletlen kitörlés ellen kell még egy rákérdezés ebben az esetben msgbox használatával)
End If
End SubÜdv.
-
föccer
nagyúr
válasz
the radish #31188 üzenetére
Cellaformátumban válaszd ki a megfelelő formátumot.
üdv, föccer
-
Fferi50
Topikgazda
válasz
the radish #30897 üzenetére
Szia!
Este már nem jutottam hozzá a géphez/internethez.
Nem szeretnélek elkeseríteni, de nálam szépen lefut és nyomtat - sima doksit és körlevelet is, ha a körlevelesbe beleteszem a megfelelő sort. A hozzászólásodból másoltam ki direkt a makrót és egyáltalán nem panaszkodott (persze fájlneveket átcseréltem...).
Nálam 2010-es Office van fent, nem tudom Nálad mi fut.
Nézd meg légy szíves az immediate ablakban a wdPrintFromTo értékét. Ha nem 3, akkor a változó helyett lsz. írd be a 3-as számot, idézőjelek nélkül.
Korábbi verziókban lehet, hogy nem így kell megadni, akkor viszont a word help tud segíteni. Ha mégsem megy/nem találod a megoldást, menjünk át privibe.Üdv.
-
Fferi50
Topikgazda
válasz
the radish #30895 üzenetére
Szia!
Milyen hibaüzenettel akad el a makró?
Azt gondolom, hogy az objword.objdoc hivatkozás lesz az igazi, az is elképzelhető, hogy az activewindow kihagyható/kihagyandó belőle.Üdv.
-
Fferi50
Topikgazda
válasz
the radish #30889 üzenetére
Szia!
Szerintem az a gond, hogy nem a word objektumra hivatkozol.
Próbáld így lsz.
objDoc.ActiveWindow.PrintOut _
Range:=wdPrintFromTo, From:="1", To:="3"Mivel két alkalmazás több különböző objektuma van benn, ezért pontosan meg kell mondani, melyiknek szánod a parancsot.
Üdv.
-
Fferi50
Topikgazda
válasz
the radish #30876 üzenetére
Szia!
Van egy olyan paramétere a PrintOut- ami megmondja, hogy mit nyomtasson ki, ez a Range.
Pl: ActiveDocument.ActiveWindow.PrintOut _
Range:=wdPrintFromTo, From:="1", To:="3"
This example prints the first three pages of the document in the active window.Üdv.
-
bteebi
veterán
válasz
the radish #30873 üzenetére
Hát ez baromi érdekes. Idézőjelek nélkül el se indul, idézőjellel pedig nem azt csinálja, amit kellene...
Excellel pedig biztos, hogy idézőjelek nélkül megy (ki is próbáltam), sőt változókkal is működik.
-
bteebi
veterán
válasz
the radish #30868 üzenetére
Idézőjelek nélkül szerintem működnie kellene.
From:=3, To:=3, Copies:=1
Valószínűleg korábban is csak annyi volt a baja. A Copies meg minden bizonnyal felesleges, mert az 1 lehet a default.
#30872: "Hol a söröm?"
A postán.
-
YAN0U
csendes tag
válasz
the radish #30865 üzenetére
From, To esetleg?
From:=3, To:=3, Copies:=1
-
Fferi50
Topikgazda
válasz
the radish #30858 üzenetére
Szia!
Örülök, hogy sikerült adaptálnod. Pár éve egy másik fórumon volt egy kis vitánk, hogyan lehet excel - word körlevél együttműködést "optimalizálni". A VBA help alapján - no meg a Word makrórögzítés segítségével - akkor sikerült összeraknom ezt a viszonylag egyszerű megoldást. Az akkor munkafüzetet már nem találtam, de a helpek a "helyükön voltak" és az "emlékfoszlányok" is segítettek.
Remélem, nem lesz a későbbiekben sem probléma.Üdv.
-
Delila_1
veterán
válasz
the radish #30860 üzenetére
Private Sub TextBox1_AfterUpdate()
Application.EnableEvents = False
If Len(TextBox1) <> 11 Or Not IsNumeric(TextBox1) Then
MsgBox "Hibás adószám", vbOKOnly + vbInformation
Exit Sub
Else
TextBox1 = Format(TextBox1,"00000000-0-00")
End If
Application.EnableEvents = True
End Sub -
Fferi50
Topikgazda
válasz
the radish #30821 üzenetére
Szia!
Az alábbi makrót idomítsd a saját fájljaidhoz. A makró maga egy excel fájlban van.
Sub wordkorlevel()
Dim wd As Object
Dim wddoc As Object
Set wd = CreateObject("Word.Application") ' megnyitja a word alkalmazást
wd.Visible = True 'láthatóvá teszi
Set wddoc = wd.documents.Open("C:\Users\fferi\Documents\Körlevél.docx") 'megnyitja a körlevelet
wddoc.mailmerge.opendatasource Name:="C:\Users\fferi\Documents\Korleveles1.xlsx", linktosource:=True, sqlstatement:="SELECT * FROM `Munka1$`" ' összekapcsolja a forrással
wddoc.Activate ' csak azért, hogy lásd
wddoc.mailmerge.ViewMailMergeFieldCodes = False ' az adatokat mutatja és nem a kódokat
Stop
wddoc.Close False 'mentés nélkül bezárja
wd.Quit ' kilép a word alkalmazásból
End SubA kód egy excel munkafüzet normál moduljában van (de lehet a körlevél forrás excel fájljában is, csak akkor menteni xlsm formában kell!!
Ezen kívül a VBA Tools References menüjében be kell pipálni a megfelelő Word verzió könyvtárát!Üdv.
-
Fferi50
Topikgazda
válasz
the radish #29645 üzenetére
Szia!
=jobb("0" & Abs(A1);3)
Üdv.
-
Delila_1
veterán
válasz
the radish #29645 üzenetére
=ha(a1<0;"-" & jobb("0" & a1;3);jobb("0" & a1;3))
-
Delila_1
veterán
válasz
the radish #29643 üzenetére
Nincs mit.
-
Delila_1
veterán
válasz
the radish #29640 üzenetére
=jobb("0" & a1;3)
-
the radish
senior tag
válasz
the radish #28805 üzenetére
Jaj, bocs. Működik. Az indítással volt probléma, nem olvastam az utolsó hozzászólásodat.
Nagyon köszönöm!
-
Fferi50
Topikgazda
válasz
the radish #28799 üzenetére
Szia!
Mégis az Application.Wait lett a nyerő.
A UserForm1 tartalmaz egy Label1 cimkét - itt fut az idő visszafelé, Commandbutton1 parancsgomb a művelet végrehajtására, Commandbutton2 parancsgomb a megszakításra.
A UserForm1 kódlapja így néz ki:
Option Explicit
Dim xx As Integer
Sub mutato()
UserForm1.Show False
For xx = 11 To 0 Step -1
UserForm1.Label1.Caption = xx
Application.Wait Now + TimeSerial(0, 0, 1)
DoEvents 'figyeli, hogy volt-e gombnyomás, ha igen, végrehajtja
Next
If xx = -1 Then UserForm1.CommandButton1_Click ' ha lefutott az idő, végrehajtjuk a műveletet, ha már megvolt, nem történt semmi
End Sub
Public Sub CommandButton1_Click()
MsgBox "Kilépek"
xx = -2
Me.Hide
End Sub
Private Sub CommandButton2_Click()
MsgBox "Cancel"
xx = -2
Me.Hide
End Sub
Private Sub UserForm_Terminate()
xx = -2
End SubHa kérdésed lenne, kérlek írj!
Üdv.
-
Fferi50
Topikgazda
válasz
the radish #28799 üzenetére
Szia!
A userformnak van egy modal paramétere, ami
vagy 1 (ha nem adod meg, ez a default), ebben az esetben addig nem megy tovább a program, amíg a form látszik
vagy 0 ill. False lehet, ezt mindig meg kell adni. Ilyenkor a form nem állítja meg a program futását. Ezért is írtam, hogy a False paramétert is állítsd be a show meghívásakor.Az application.wait valóban megállítja a program futását, bocs erre nem voltam figyelemmel, más módon kell a 10 mp - visszaszámlálást megoldani.
Még agyalok rajta egy kicsit, lehet az időzítő funkciót kell használni.Üdv.
-
Fferi50
Topikgazda
válasz
the radish #28797 üzenetére
Szia!
Szerintem ez saját alkotású UserForm-mal oldható meg. Egy cimke az üzenettel, két parancsgomb + egy cimke a timernek.
Amikor megmutatod a formot, beállítod az üzenetet és a timert - megjelenítés userform.show false paraméterrel, hogy a program fusson tovább, de a programba beteszed a 10 mp várakozási időt is (Application.Wait) a megjelenítő sor után - ha lejárt az idő, végrehajtod a műveletet és eltünteted a formot.
Ha Mégse gombot nyomnak, akkor is el kell tüntetned a formot, mielőtt tovább mész.Üdv.
-
m.zmrzlina
senior tag
válasz
the radish #28786 üzenetére
Szivesen.
-
m.zmrzlina
senior tag
válasz
the radish #28782 üzenetére
Próbáld a következő egyéni formátumkóddal:
000;-00
-
the radish
senior tag
válasz
the radish #28778 üzenetére
Láma vagyok.
A kijelölés volt kevés. A1:F20000 -
szatocs1981
aktív tag
válasz
the radish #28769 üzenetére
Ez segít a továbbiakban?
If Dir("C:\amitakarsz.txt") <> "" Then
MsgBox "File létezik!"
Else
MsgBox "File nem létezik!"
End If -
poffsoft
veterán
válasz
the radish #28753 üzenetére
miért lépne ki?
az if then lefuttatja a cserét, és megy tovább a makród.if worksheet("munka1").range("A1")=1 then
Dim Zelle As Range
For Each Zelle In Selection.Cells
Zelle.NumberFormat = "@"
Zelle.Value = Replace(Zelle.Value, ",", ".")
Next Zelle
ELSE
blabla2
blabla2
END IF?
vagy nem értelek. -
poffsoft
veterán
válasz
the radish #28753 üzenetére
dupla
-
Fferi50
Topikgazda
válasz
the radish #28750 üzenetére
Szia!
Workbooks.Open Filename:= "C:\A.xls"
Range(cells(2,2),cells(2,2).End(xlDown)).Copy destination:=Workbooks("B.xls").Sheets("munka1"). Range("A2")Üdv.
-
szatocs1981
aktív tag
válasz
the radish #28747 üzenetére
Próbáld meg evvel a makróval. Mielött futtatod jelöld ki a cellákat, ahol cserélni akarod a vesszöt pontra!
Sub Csere()
Dim Zelle As Range
For Each Zelle In Selection.Cells
Zelle.NumberFormat = "@"
Zelle.Value = Replace(Zelle.Value, ",", ".")
Next Zelle
End Sub -
szatocs1981
aktív tag
válasz
the radish #28745 üzenetére
Amúgy nem az a gond, hogy SZAMOKBAN a tizedesvesszöt akarod lecserélni pontra?
Azt szerintem Windows-ban vagy EXCEL beállításokban kell megtenni.Ha SZÖVEGBEN akarod lecserélni a vesszöt pontra, akkor müködik a makró!
-
szatocs1981
aktív tag
válasz
the radish #28743 üzenetére
"Nem megy" - ez mit takar?
-
FozzieBear
csendes tag
válasz
the radish #28741 üzenetére
Szerintem nincs ezzel semmi gond, kicseréli ez az aktív munkalap A1:B20 tartományában.
-
Fferi50
Topikgazda
válasz
the radish #28551 üzenetére
Szia!
Úgy gondolom, az a probléma, hogy a meghívott makróból nem ugyanabba a helyzetbe térsz vissza, ahonnan meghívtad:
Rows(tol & ":" & ig).copy WSM.Range("A2") Ezzel átmásolod a sorokat a forrás munkalapról a cél munkalapra
proba
Itt a másolandó munkafüzet innen nevű munkalapja az aktív.
Itt viszont:
Sub proba()
Range("A1:E3693").Select ' még mindig a másolandó munkafüzet aktív, annak az A:E oszlopát másolod
Selection.copy
Windows("B.xls").Activate 'átváltasz a cél munkafüzetre
Sheets("Munka2").Select 'abban is a Munka2 munkalapra
Range("A1").Select 'és ide másolod be a kijelölt részeket
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Sheets("ide").Select ' itt pedig a cél munkafüzet ide nevű munkalapját aktíválod - a cél munkafüzet marad az aktív!!! - Pedig a másolandó munkalap volt aktív, amikor a makrót meghívtad!!!
'Azaz ide a Windows("A.xls").Activate sor kellene ezen sor helyett.
MsgBox "Makró"
End SubTovábbá nem egészen értem, miért kell a Select - Copy - Paste és munkafüzet aktíválások sora (amiben el is vesztél szépen
).
A Copy metódusnak van egy Destination paramétere, amivel megadhatod, hogy hova másolja át az adott tartományt. (Ráadásul ezt alkalmazod is a fejléc másolásánál!).
Vagyis a másolás egy sorral megoldható:
Range('A1:E3693").copy destination:=WSM.parent.Sheets("Munka2").range("A1")
Magyarázat: A WSM.parent eredménye a B munkafüzet, így a másolás egyből annak Munka2 munkalapjára megy át.A rövidebb makród azért "tökéletes", mert abban csak egy üzenet van és nem végzel vele semmilyen egyéb - munkalap, munkafüzet megváltoztatási - feladatot.
A leírtakból az is kiderül, ha nem kell mást csinálnia a meghívott makrónak, csak ezt a másolást, akkor nincs is rá szükség, mert az egy sort be lehet oda is szúrni a meghívás helyére.
Bocsi, hogy egy "lerágott csontot" próbáltam meg egy kicsit kibogozni eléggé elkésve, de csak most volt időm foglalkozni vele.
Üdv.
-
Fferi50
Topikgazda
válasz
the radish #28568 üzenetére
Szia!
Próbáld ki az alábbi makrót:
Sub csvment()
Dim fileszam As Integer, sor As Range
fileszam = FreeFile()
Open "Minta.csv" For Output As #fileszam
For Each sor In ActiveSheet.Rows
Print #fileszam, Join(Application.Transpose(Application.Transpose(sor.Value)), ";")
Next
Close #fileszam
End SubÜdv.
-
the radish
senior tag
válasz
the radish #28567 üzenetére
-
Delila_1
veterán
válasz
the radish #28560 üzenetére
Szívesen (a szerintem semmit).
-
Delila_1
veterán
válasz
the radish #28558 üzenetére
Sajnálom, csak a füzetek felépítése, és a teljes feladat ismeretében mondhatnék esetleg valamit.
-
Delila_1
veterán
válasz
the radish #28555 üzenetére
Valószínű, hogy meg lehet oldani, de így vakon kaparászva nem tudok segíteni.
-
Delila_1
veterán
válasz
the radish #28551 üzenetére
Az Else ágba írtam be két sort, és akkor nincs szükség a külön makróra.
Else
ig = Application.Match(sorszam, Columns(1), 1)
Rows(tol & ":" & ig).copy WSM.Range("A2")
Range("A:E").copy WSM.Sheets("Munka2").Range("A1") '1
WSI.Activate '2
' Masolas 'Itt indul a saját makród ****** megjegyzésbe tettem
sorszam = sorszam + 1 'növeljük a keresendő értéket
End IfHiába írtam át a makród nevét, még mindig van valami disznóság, másképp a VBE átírta volna a copy-t Copyra.
-
Delila_1
veterán
válasz
the radish #28548 üzenetére
Most hirtelen azt látom nagy hibának, hogy a makród neve egy VBA-s kulcsszó, copy.
Nézd meg, hogy pl. az első makró Else ágában, aRows(tol & ":" & ig).copy WSM.Range("A2")
sorban a Copy utasítást nem is váltotta át nagy kezdőbetűre, mert a copy című makródként értelmezi.
-
Delila_1
veterán
válasz
the radish #28543 üzenetére
A saját makród végén állj vissza oda, ahol a makró előtt voltál.
-
Delila_1
veterán
válasz
the radish #28540 üzenetére
Nézd meg, nincsenek-e véletlenül azonos nevű változók a két makróban. Nem lehetnek, mert akkor a meghívott makró változói felülírják az indító makró változóinak az értékét.
-
Delila_1
veterán
válasz
the radish #28491 üzenetére
Semmiképp ne Excelben oldd meg!
Nézz utána a Word körlevél funkciójának.
-
szatocs1981
aktív tag
válasz
the radish #28491 üzenetére
Lehet, h félreértelmezem a feladatot, de nem megoldás, ha csinálsz a .doc-ból egy kitölthetö .pdf-et?
-
Delila_1
veterán
válasz
the radish #28328 üzenetére
Akkor segítene más.
Szívesen.
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! Apple iMac Pro (2017) 5K - Xeon W-2140B 64GB DDR4 RAM 1TB SSD Radeon PRO Vega 56 8GB
- Telefon felvásárlás!! Xiaomi Redmi Note 10, Xiaomi Redmi Note 10s, Xiaomi Redmi Note 10 Pro
- Bomba ár! Lenovo ThinkPad L380 - i5-8GEN I 8GB I 256SSD I 13,3" FHD / MT I HDMI I Cam I W11 I Gari!
- AKCIÓ! Dell Optiplex 5050 SFF asztali számítógép - i5 7500 8GB DDR4 256GB SSD HD630 Win10
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest