Hirdetés
- Luck Dragon: Asszociációs játék. :)
- sh4d0w: Kalózkodás. Kalózkodás?
- Lalikiraly: Kaáli Autó-Motor Múzeum
- gban: Ingyen kellene, de tegnapra
- Brogyi: CTEK akkumulátor töltő és másolatai
- sziku69: Szólánc.
- WireGuard VPN a mindennapokra
- GoodSpeed: Ágymatrac keresési kálvária
- sh4d0w: StarWars: Felismerés
- Meggyi001: Kórházi ellátás: kuka vagy finom?
Új hozzászólás Aktív témák
-
Zalanius
tag
válasz
Bobrooney
#3050
üzenetére
Ez félig bugnak tűnik, de található rá magyarázat. A szürke popup kivételével sikerült is reprodukálnom. A cellához tartozó link nem egy egyedi string érték, hanem egy collection. Két cella egyesítésekor az első cella linkje marad csak meg, a többié elveszik, eddig rendben. Ha ezután módosítod a grafikus nézetben a linket, akkor a háttérben egy .Add() függvényt használhat az Excel. Ez csak tipp, de eléggé gyanús. Mi történik ezután: az egyesített cella első részcellájában KETTŐ link lesz, az (1) indexen a régi, a (2) indexen az új. A többi részcellában eddig semmi nem volt, ezért oda az (1) indexen az új kerül.
Tegyük fel, hogy az A oszlopban vannak a linkes cellák, némelyik egyesített. Ekkor egy teljeskörű teszthez például bevethető ez, most 4 sort feltételezve:
Dim rowcount%
rowcount = 4
For i = 1 To rowcount
If Range("A1").Offset(i - 1, 0).Hyperlinks.Count > 0 Then
For j = 1 To Range("A1").Offset(i - 1, 0).Hyperlinks.Count
MsgBox Range("A1").Offset(i - 1, 0).Hyperlinks(j).Address, vbOKOnly, _
Range("A1").Offset(i - 1, 0).AddressLocal & ", index: " & j & _
", full count: " & Range("A1").Offset(i - 1, 0).Hyperlinks.Count
Next
End If
NextHa a problémádat jól leírja a fenti, és VBA-ban kell feldolgoznod a linkeket, akkor a Count tulajdonságot kell indexként használni, és így mindig a legutoljára beállított linket olvassa a kód.
Persze van egy olyan olvasata is ennek az enyhén bugos helyzetnek, hogy formailag szép dolog az egyesített cella, de amint a tábla célja nem a külsőségekről szól, hanem valamilyen automatizált feldolgozásról, ott részemről csak felesleges nyűg.
-
Zalanius
tag
válasz
Bobrooney
#3045
üzenetére
Ez elég furcsa, efféle url encodingot automatikusan nem kellene kapnod, kipróbáltam saját fájlban is, simán benne hagyta a szóközöket. Van egyébként olyan beépített függvény Encodeurl néven, ami ilyen átalakításokat csinál, de a fordított irányról nem tudok (2013-assal bezárólag). Kerülő úton lehet megpróbálni, mondjuk cserékkel, lásd például itt.
-
Zalanius
tag
válasz
Bobrooney
#3042
üzenetére
Kipróbáltam két oszloppal, 10 ezer sorban, de nehezítésképpen úgy, hogy az első 5000-ben csak X volt mindenhol, és az egyik gyümölcsnél később is csak X volt. Nem is igazán mérhető a futásidő, fél másodpercnél is kevesebb. Tehát vagy rengeteg oszlopod lehet, vagy sok százezer sor, vagy még egyéb tényezők. De a 10 perc mindenképpen túlzás.
Tudom h nem kértél konkrétumot, de csak bemásolok ide egy rövidke scriptet, egyszerű megközelítésben, valami támpontot adhat azért.
Option Base 1
Sub t()
Dim gimilc()
Dim vannemX()
Dim n%, i%
Dim g As String
n = 1
ReDim Preserve gimilc(n)
ReDim Preserve vannemX(n)
gimilc(1) = Cells(2, 1).Value
vannemX(1) = False
If Cells(2, 2).Value <> "X" Then
vannemX(1) = True
End If
For i = 3 To 10000
g = Cells(i, 1).Value
Dim gindex%
gindex = -1
For j = 1 To n
If gimilc(j) = g Then
gindex = j
Exit For
End If
Next
If gindex = -1 Then
n = n + 1
ReDim Preserve gimilc(n)
ReDim Preserve vannemX(n)
gimilc(n) = g
vannemX(n) = False
If Cells(i, 2).Value <> "X" Then vannemX(n) = True
Else
If vannemX(gindex) = False Then
If Cells(i, 2).Value <> "X" Then vannemX(gindex) = True
End If
End If
Next
End Sub -
csaszizoltan
csendes tag
válasz
Bobrooney
#3042
üzenetére
Szia!
Gondolom az egyes celláinak elérése nem gyors vagy minden X találat után indítasz egy új átfésülést, ami fölösleges ezért
Rakd tömbbe a gyümölcsneveket (ha sokféle van, kb 100-nál több akkor bináris fába, ahol a fa egyes mutatói még két tömbben helyezkednek el tömbindexként) és másik két ugyanakkora tömbbe, hogy van X benne és van nem X benne. Ez az algoritmus egyszer fog végigfutni a munkalapon.
Érdekelne majd a "gyümölcsökre" megvalósított algoritmus, hogy beleszólhassak a gyorsabb futás érdekében.
Üdv
-
alexy92
aktív tag
-
Zsolt_974
tag
válasz
Bobrooney
#2670
üzenetére
Bocs, hogy nem válaszoltam, de nem volt rá időm.

Igen közbe rájöttem én is, hogy miért csak a Com1-et találja meg és a Com9-et miért nem. Azért, mert a Com9 egy usb-s eszköz, "virtuális soros port".

Viszont ezzel:
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity")sikerült megtalálni az USB-Serial CH340(COM9)-et, de sajnos sok PnP eszköz, erőforrások is belekerült a listába.

-
Zsolt_974
tag
válasz
Bobrooney
#2668
üzenetére
Így indul a program:
A belépés gombra klikkelve:
Ok gombra klikkelve és utána a "Com port lenyílóban ezek láthatók: Com1, Com9, Kommunikációs port(Com1)":
A program kódban az ehhez tartozó sorok:
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_SerialPort")
_______________________________________________________________________________________Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _Button1.Click
For Each queryObj As ManagementObject In searcher.Get()
MsgBox(queryObj("Name"))
Dim textt As String = queryObj("Name").ToString
RichTextBox1.Text = textt
ComboBox1.Items.Add(textt)Next
ComboBox1.Items.AddRange(IO.Ports.SerialPort.GetPortNames())
End SubVégül is tegnap már ott jártam, hogy a ComboBox-ba is beírja, de sajnos csak a
Kommunikációs port(COM1). Az USB-SERIAL CH340(COM9) nem sikerül kiíratni.
A két port közül miért csak a Kommunikációs port(COM1)-et találja meg? -
Zsolt_974
tag
válasz
Bobrooney
#2666
üzenetére
Köszönöm a gyors választ.

Sajnos ezzel is csak a következőt kapom vissza, hogy
COM 1
COM 9Viszont ezt találtam:
[link]Ez egy MsgBox-ban vissza adja ezt:

Sajnos a ComboBox1-be nem tudom belevarázsolni és csak a Com 1 jelenik meg a Com 9 nem.
Én csak hobbiszinten programozgatok.
Viszont kitartóan. 
Zsolt
-
DasBoot
aktív tag
válasz
Bobrooney
#2654
üzenetére
Köszönöm a választ. Nem is az volt a célom, hogy egyből kapjak választ. Szóval a képen a bekarikázott részeket szeretném elmenteni, de külön-külön. A konkrét dolog, hogy egy PLC progarmban a letrák rajzolását szeretném megoldani. A mentett alakzatokat később egy CommandButton-nal szeretném a megfelelő helyre beilleszteni. Iagzándiból a papíron való rajzolást szeretném kiváltani.
-
martonx
veterán
válasz
Bobrooney
#2482
üzenetére
Több lehetőséget is látok, gondolom ezeket lenne érdemes megnézned makró rögzítővel:
1. Adatok fülön kiválasztod a Remove Duplicates (bocs, nincs magyar excelem) opciót.
2. Adatok fülön kiválasztod az Advanced filter-t. Ennél meg tudod adni, hogy csak a unique elemeket másolja / jelenítse meg. Bár nálam ez a mini példámban nem igen csinált semmit, de elvileg ennek is mennie kellene. -
vilag
tag
válasz
Bobrooney
#2164
üzenetére
Teljesen igazad van, úgy (ahogy régi matektanárom mondta) valóban elegánsabb. Holnap ha bemegyek a céghez át is írom.
A programot még 2010-ben kezdtem írni, akkor még fele ennyit sem tudtam
Azóta persze sokat tanultam és ha valamire találok elegánsabb megoldást akkor át szoktam írni.
-
vilag
tag
válasz
Bobrooney
#2045
üzenetére
Volt nekem egy MsgBox-om amit gondoltam egy öt perces munkával lecserélek egy sajátra (persze némi plusz funkciót is rá akartam tenni)....
... azóta eltelt mondjuk egy hét, meg rászántam már kb. 12-13 órát és most tartok ott, hogy lehet, hogy működőképes lesz a dolog....
...de az is lehet, hogy csak én vagyok ennyire béna

-
válasz
Bobrooney
#1903
üzenetére
callbyname azért nem működik, mert pont a másik irányból közelíti meg a kérdést, mint amit te szeretnél:
Nem egy függvényt vált ki (mint egy eseménykezelő), hanem egy már megírt függvényt lehet vele meghívni úgy, hogy nem a függvényt hívod meg közvetlenül, hanem átadod a környezetnek a függvény nevét és az argumentumokat és hagyod, hogy a futtatókörnyezet megkeresse neked. De ehhez fontos, hogy a függvények már készen legyenek. Nálad meg ugye az volna a lényeg, hogy a függvényeket ne kelljen megírni negyvenszer... -
válasz
Bobrooney
#1898
üzenetére
Mármint mi a probléma? Megcsinálsz mindent az első válasz alapján:
1) Csinálsz egy classt (még a neve is oda van írva - TextBoxEventHandler)
2) Belemásolod az újonnan készített class-ba az első adag kódot
3) Belelépsz a formod kódszerkesztőjébe
4) Belemásolod a második kódot (persze, ha volt már valami kitöltve a UserForm_Initialise-ben, akkor hozzácsapod az elejéhez/végéhez)
5) A TextBoxEventHandlerclass kódszerkesztőjében a Private Sub m_oTextBox_Change() -et szerkeszted a kedved szerint...Hol akadtál egyáltalán el?
Új hozzászólás Aktív témák
- Battlefield 6
- Székesfehérvár és környéke adok-veszek-beszélgetek
- Azonnali mobilos kérdések órája
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- Sagem MyX-8
- Vezetékes FEJhallgatók
- Milyen videókártyát?
- Ne várj sokat a vásárlással: drágulás a láthatáron
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- TCL LCD és LED TV-k
- További aktív témák...
- Z790 Strix-A, 14700K, 2x16GB 7200 mhz, Tuf 4080, Corsair H1000i
- -ÚJ,2 ÉV GAR- GAMER PC: RYZEN 7 5700/5800X +RX 6600/6700XT +16-64GB DDR4! SZÁMLA! 70 féle ház!
- Üzletből, garanciával, DeLL Inspiron 16 5630 -i5-1340P-16 szál/16RAM/512SSD/16,1"FULLHD IPS
- -ÚJ,2 ÉV GAR- GAMER PC: i5-14400F (10mag/16szál) +RX 6600/6700XT +16-64GB DDR4! SZÁMLA! 70 féle ház!
- Thrustmaster T-GT II bázis - Thrustmaster Sparco P310 - Thrustmaster T3PM pedál - Playseat Evolution
- Honor 200 Lite 256GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 11 Pro Max 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3268, 100% Akkumulátor
- BESZÁMÍTÁS! ASRock B450M R5 3500X 16GB DDR4 512GB SSD RTX 3050 8GB GameMax STORM Black EVGA 600W
- Lenovo ThinkPad T14S Gen1 Intel i5-10310U
- REFURBISHED - HP USB-C Universal Dock G1 (DisplayLink)
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest





Viszont kitartóan. 


![;]](http://cdn.rios.hu/dl/s/v1.gif)

