- Musk betiltja az iPhone-okat a Teslánál és az X-nél, ha ezt meglépi az Apple
- A hírnévkezelési cég megígérte: eltünteti a rossz értékeléseket
- Az AI függővé teszi a bankokat a big tech-től
- Léptek New Yorkban a közösségi média függőséget okozó algoritmusai ellen
- Nem szavazza meg Musk 56 milliárd dolláros csomagját a norvég állami vagyonalap
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Mozilla Thunderbird
- Tarr Kft. kábeltv, internet, telefon
- Musk betiltja az iPhone-okat a Teslánál és az X-nél, ha ezt meglépi az Apple
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- OpenMediaVault
- Aliexpress tapasztalatok
- Opera böngésző
- SkyShowtime
- Synology NAS
-
IT café
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
-
lenkei83
tag
Sziasztok!
Névkezelőben dinamikus tartományokat állítottam be, excelben jól működik. VBA-ban hogyan tudok rá hivatkozni? Konkrétan beraktam egy comboboxot egy munkalapra, és szeretném ha ebben jelennének meg a dinamikus tartományom elemei.
Ez a megoldás nem jó:
ComboBox1.List = Range("yy").Cells.Value
Üdv.:
P. -
lenkei83
tag
válasz
Delila_1 #32994 üzenetére
Írtam, hogy munkalapra raktam be a comboboxot.
Oké oké oké. Ha fix named range van az egyértelmű. De itt pont ez a lényeg, hogy dinamikus volt. Vagyis a megadott tartományom belül ha új elem került be, akkor azt is hozta automatikusan + 1 üres sort. Nem véletlenül volt ez így. -
lenkei83
tag
Sziasztok!
Megnyitott csv-ben szeretném megszámolni a sorokat, tehát a VBA open valami for input parancs nem jó.
És éppen ez a bajom. Nyitott fájlt hogyan lehet beadni a for input as parancshoz?A lenti kód működik, ha épp nincs megnyitva a fájl, ezt kellene orvosolni valahogyan.
üdv
P.Dim filenum As Integer
Dim count As Long
Dim tmp As String
xx = FreeFile
[B]Open ThisWorkbook.Path & "\" & "1665" & "_" & ido & ".imp" For Input As xx[/B]
Do While Not EOF(xx)
Line Input #xx, tmp$
count = count + 1
Loop
MsgBox count -
lenkei83
tag
-
lenkei83
tag
Sziasztok!
Ha ezt lefuttatom, az If sorban lévő munkalapokat miért nem hagyja ki az msgboxnál?
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.CodeName <> "Munka7" Or ws.CodeName <> "Munka8" Or ws.CodeName <> "Munka10" Then
MsgBox ws.CodeName
End If
NextKöszi.
P. -
lenkei83
tag
válasz
Delila_1 #33043 üzenetére
Hu, ezt most fejben nem tudom összerakni.
Működik "OR"-ral, de nem értem. Eddig sosem volt gondom a ciklusokkal, de erre rácsodálkoztam.A ciklus egyszerre csak egy ws-t vizsgál és azt nézi, hogy az adott ws-nek mi a neve, ami ha nem egyenlő a megadottal akkor kihagyja, de nem ezt teszti.
OR-nak elvileg akkor lenne értelme, ha egyszerre több munkalap lenne kijelölve és azt vizsgálnám, hogy a kijelöltek közül ha az egyik neve <> munkax és a másik neve <> munkay akkor msgbox.Vagy valamit nem jól látok?
-
lenkei83
tag
Sziasztok!
Van egy olyan megoldásom, hogy copy paste-nél csak az értéket másolja be az adott cellába. Ezt gondolom nem kell tovább magyarázni, így néz ki:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal target As Range)
Dim regiertek
Dim change_data As String
If sh.CodeName = "Munka7" Or sh.CodeName = "Munka10" Or sh.CodeName = "Munka8" Then
Debug.Print sh.Name
Stop
Exit Sub
Else
regiertek = target.Value
Application.EnableEvents = False
Application.Undo
target.Cells.NumberFormat = "@"
If Application.CutCopyMode <> False Then
target.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Else
target.Value = regiertek
End If
End If
Application.EnableEvents = True
Exit Sub
End SubEbbe szeretnék beoperálni egy olyan megoldást, hogy a másolt értékből csak a numerikus karakterek legyenek beillesztve.
A nem numerikus karakterek eltávolítására is van megoldás:
Sub RemoveNotNum()
Dim rng_cl As Range
Dim Workrng_cl As Range
Dim xOut As String
Dim i As Integer
Dim xTemp As String
Dim xstr As String
'On Error Resume Next
Set Workrng_cl = Selection
For Each rng_cl In Workrng_cl
xOut = ""
For i = 1 To Len(rng_cl.Value)
xTemp = Mid(rng_cl.Value, i, 1)
If xTemp Like "[0-9]" Then
xstr = xTemp
Else
xstr = ""
End If
xOut = xOut & xstr
Next i
rng_cl.Value = xOut
Next
End SubViszont nekem a kettő kombinációjára lenne szükségem, konkrétan ha mondjuk dátumot másolok át egy másik munkafüzetből, akkor törölje ki a dátum elválasztókat és csak a számot hagyja bent a cellában.
Valakinek valami ötlet?
Köszi.
P. -
lenkei83
tag
válasz
nesh20 #33072 üzenetére
Szia!
Valami ilyesmire gondoltál?
Sub Masolas()
Dim ws_from As Worksheet
Dim ws_to As Worksheet
Dim ws_to_lastrow As Long
Set ws_from = Worksheets("Munka1")
Set ws_to = Worksheets("Munka2")
ws_to_lastrow = ws_to.Cells(ws_to.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
ws_to.Rows(ws_to_lastrow).EntireRow.Value = ws_from.Rows(2).EntireRow.Value
End Sub[ Szerkesztve ]
-
lenkei83
tag
válasz
nesh20 #33074 üzenetére
Szia!
Elnézést, átsiklottam ezen a részen.
Kicsit átírtam a kódot.üdv
P.Sub Masolas()
Dim ws_from As Worksheet
Dim ws_from_lastcolumn As Long
Dim ws_from_range As Range
Dim ws_to As Worksheet
Dim ws_to_lastrow As Long
Dim ws_to_range As Range
Set ws_from = Worksheets("Munka1")
Set ws_to = Worksheets("Munka2")
ws_from_lastcolumn = ws_from.Cells(2, ws_from.Columns.Count).End(xlToLeft).Column
Set ws_from_range = ws_from.Range("A2:" & Chr(ws_from_lastcolumn + 64) & 2)
ws_to_lastrow = ws_to.Cells(ws_to.Rows.Count, "B").End(xlUp).Offset(1, 0).Row
Set ws_to_range = ws_to.Range("B" & ws_to_lastrow & ":" & Chr(ws_from_lastcolumn + 65) & ws_to_lastrow)
ws_to_range.Value = ws_from_range.Value
End Sub[ Szerkesztve ]
-
lenkei83
tag
válasz
asphalt #33079 üzenetére
Lehet hogy nem értek valamit?
Ha így írod be:$B2*$C2
akkor függőleges irányba tudod húzni a képletet és a sorok száma folyamatosan változni fog, az oszlopod fix marad. Ezt utána miért akarod rögzíteni?
Esetleg rakj fel egy táblát amiben látszik, hogy mit szeretnél pontosan.Üdv.:
P. -
lenkei83
tag
válasz
asphalt #33082 üzenetére
Szia!
Alap excelben én nem tudok olyan megoldásról, amivel a dollárjeleket be lehetne rakni a képletbe. Vannak részmegoldások amit egy sima cserével (CTRL+H) meg lehet csinálni, pl a relatív oszlopot lehet cserélni (pl.: "A"-ról "$A"-ra) és fordítva. De ugyanígy az összes (vagy kijelölt) cellákból ki lehet törölni a dollárjelet. Viszont ha mondjuk az oszlopod fix (legyen "B") és a sorod lefelé változik (1,2,3 stb..), akkor itt soronként kell cserét csinálni, mivel egyszerre az össze számot nem tudod keresett szövegként beadni a cseréhez.
Lehet hogy van rá mezei felhasználóknak is egyszerű megoldás, csak én nem találkoztam vele.
Viszont VBA-val egyszerűen meg lehet csinálni. A linken található fájlban figyeld a kijelölt területet (ami képletet tartalmaz) nyomkodd végig a gombokat, és figyeld a szerkesztőlécen, hogy mi történik a képlettel.
üdv
P. -
lenkei83
tag
-
lenkei83
tag
válasz
Fferi50 #33130 üzenetére
Szia Feri!
Köszönöm, működik, annyit kellett változtatni, hogy
RemoveNotNum(target.value)
helyettRemoveNotNum(regiertek)
Nem is értem mit nem értettem...Amire viszont most jöttem rá, hogy ha több értéket akarok egyszerre bemásolni akkor ez nem működik, mert a target range csak egy lehet. Van erre valami megoldás?
üdv
P.[ Szerkesztve ]
-
lenkei83
tag
válasz
Fferi50 #33140 üzenetére
Azért
regiertek
, mert az a sor ugyan meg van hogyregiertek = target.Value
, de utána van egyapplication.undo
, és ha ilyenkor hívom meg functionnal atarget.Value = RemoveNotNum(target.value)
-t, akkor atarget.Value
éppen üres, vagyis üresre fogja hozni a cellámat.If sh.CodeName = "Munka7" Or sh.CodeName = "Munka13" Or sh.CodeName = "Munka10" Or sh.CodeName = "Munka8" Or sh.CodeName = "Munka5" Then
Application.EnableEvents = True
Exit Sub
Else
If (sh.CodeName = "munka5" Or 1 <= target.Column <= 2) Then
regiertek = target.Value
Application.EnableEvents = False
Application.Undo
target.Cells.NumberFormat = "@"
If Application.CutCopyMode <> False Then
target.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
target.Value = RemoveNotNum(regiertek)
Else
target.Value = RemoveNotNum(regiertek)A meghívásnak így kellene kinézni? Konkrétan a bemásolt (vagyis az aktuálisan kijelölt) területre szeretném alkalmazni, akkor így kellene meghívni?
RemoveNotNum Selection
Nem igazán akar működni worksheet_change-el
Else
If (sh.CodeName = "munka5" Or 1 <= target.Column <= 2) Then
regiertek = target.Value
Application.EnableEvents = False
Application.Undo
target.Cells.NumberFormat = "@"
If Application.CutCopyMode <> False Then
target.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
RemoveNotNum regiertek
Else
RemoveNotNum regiertek
End Ifüdv
P.[ Szerkesztve ]
-
lenkei83
tag
Jó reggelt!
Látott már valaki ilyet? Fura munkalapok jelentek meg a Project Explorer-ben, a munkafüzetben nem látni ezeket. Honnan jöttek és hogyan tudom eltüntetni?
Ja és az codename mindegyiknél thisworkbookÜdv.:
P.[ Szerkesztve ]
-
lenkei83
tag
Sziasztok!
Van egy file-om, amiben a kód még 2010-es excel alatt íródott. Ha 2016-al nyitom meg, akkor csúnyán elszáll de nem a kód, hanem maga az excel. --> "Microsoft Excel működése leállt" blaa blaa
Meg lehet valahogy keresni, hogy mi a baja?A fájl itt leledzik: [link]
Köszi&üdv.:
P. -
lenkei83
tag
válasz
Fferi50 #34421 üzenetére
Közben megtaláltam.
Ribbon meghívásnál száll el a CopyMemory sornál.
#If VBA7 Then
Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
#Else
Function GetRibbon(ByVal lRibbonPointer As Long) As Object
#End If
Dim objRibbon As Object
CopyMemory objRibbon, lRibbonPointer, LenB(lRibbonPointer)
Set GetRibbon = objRibbon
Set objRibbon = Nothing
End Function[ Szerkesztve ]
-
lenkei83
tag
Sziasztok!
x64 alatt a VarPtr miért dob type mismatch hibát?
Public Function Hook() As Boolean
Dim TmpBytes(0 To 5) As Byte
Dim p As Long
Dim OriginProtect As Long
Hook = False
pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6Köszi
P. -
lenkei83
tag
Sziasztok!
Lehet már csak fáradt vagyok, vagy péntek....
Dim selected_sheet_name As Variant
Dim selected_sheet As Worksheet
selected_sheet_name = Worksheets(ws_alapadat.Range(cell.Offset(0, -5).Address).Value).CodeName
Set selected_sheet = selected_sheet_nameA selected_sheet_name Munka6-ot hoz, ez oké. De a második sorban miért nem tudom ezt deklarálni mint munkalap? Object required
Köszi
P. -
lenkei83
tag
válasz
Juditta_56 #35330 üzenetére
Hello!
Kérdőjelek helyére:
FileFormat:=51
Üdv.:
P. -
lenkei83
tag
-
lenkei83
tag
Sziasztok!
Van egy listboxom, amiben a rejtett munkalapok nevei vannak, melyek vagy csak simán
visible=false
, vagyxlveryhidden
tulajdonsággal rendelkeznek.Ami veryhidden, azokat az elemeket szeretném piros betűvel megjeleníteni. Tud valaki erre egyszerű megoldást?Köszi & üdv.:
P. -
lenkei83
tag
Sziasztok!
Adott egy tartomány mondjuk A1:G1 tele számokkal, és azt szeretném tudni, hogy a D1-ben lévő érték hányadik a sorban. Vagyis ha növekvő vagy csökkenőbe rendezném a számokat akkor hanyadik helyen állna.
Tud valaki ilyen képelete? Az én agyam mára már felmondtam a szolgálatot.Köszi
P. -
lenkei83
tag
Ha berakok egy (diagramra) űrlap vezérlőből combo boxot és a callecsatolását beállítom egy munkalap adott pontjára ami ugye változik a legördülőből választott elem sorszámának megfelelően, akkor ezt miért nem érzékeli worksheet_change event-nek? Rá bírni valahogy? Mindenképpen kell egy change eventet varázsolnom valahogy ebből.
-
lenkei83
tag
Sziasztok!
Powerpointban ez beszínezi az egész seriescollectiont:
ActivePresentation.Slides(1).Shapes(1).chart.SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbBlue
Hogy lehet ebből olyat varázsolni, hogy a
SeriesCollection(1)
egyetlen elemét színezze csak át?
Excelben megy, powerpointban nem tudok rájönni.köszi
P. -
lenkei83
tag
válasz
Fferi50 #35656 üzenetére
Szia!
De van, közben rájöttem mi a gond, de a megoldást még nem találtam ki.
Combobox change-hez van hozzárendelve a színezés, viszont amikor kiválasztok a comboboxban egy másik értéket, az csak end sub után lesz aktív point. Vagyis amíg nem fut le teljesen a chang event, addig a diagram előző point értékeit veszi figyelembe és ez alapján színez. Viszont az előző dián lévő point az új combo választás szerint szerepelhet teljesen más helyen a diában és így teljesen bután néz ki a dia.Érthető ez így?
üdv:
P. -
lenkei83
tag
Jó reggel!
Userformon hogyan tudom viszgálni az összes checkboxot egyszerre? Két opció érdkel: be van e mind pipálva vagy sem.
Köszi & üdv.:
P.
Új hozzászólás Aktív témák
- Milyen autót vegyek?
- Huawei Watch Fit 3 - zöldalma
- Politika
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Mozilla Thunderbird
- Viber: ingyen telefonálás a mobilodon
- Vodafone mobilszolgáltatások
- XMLTV EPG letöltő progi
- A fociról könnyedén, egy baráti társaságban
- PlayerUnknown’s Battlegrounds
- További aktív témák...
- Game Pass Ultimate előfizetések 1 - 25 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN!
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Steam kulcsok - UTALÁS/REVOLUT
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen