Hirdetés

Keresés

Új hozzászólás Aktív témák

  • shev7
    veterán

    Sziasztok! Kerestem a VB6 súgójában meg neten is, hogyan tudok faktoriálist számolni. Eddig mindenhol azt láttam, hogy egy ciklust kell irni rá, és azzal meg lehet oldani. Az lenne a kérdésem, hogy valóban nem létezik rá operátor közvetelnül, mint ahogy matek órán megszokta az ember a felkiáltójelet.

    tenyleg nem.

  • shev7
    veterán

    Hi!

    Nagyon szépen köszönöm a választ, csak egy aprócska problémába ütköztem, mivel Office 2007 - ben nincs klasszikus menü ugye, és a referenciákat nem találtam.

    Másik: Be tudnád illeszteni a megoldást egy konkrét példába? (ami önmagában működőképes).

    Előre is köszi!

    office 2007-em nincs a meloban. De ugye a referenciat nem az excelben kell hozzaadni, hanem a VBA editorban, az meg emlekeim szerint 2007 alatt is a "klasszikus menu"-t hasznalja...

    mit ertesz az alatt, hogy onmagaban mukodokepes? mi nem mukodokepes azon, hogy egy valtozoban (amivel ugye azt csinalsz utana amit akarsz) bekerul a vagolap tartalma? azert ezt adoptalni a sajat kododba mar nem kene hogy problemat jelentsen...

    Dim DataObj As New MSForms.DataObject
    DataObj.GetFromClipboard
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= DataObj.GetText, TextToDisplay:= "Link"

  • shev7
    veterán

    Hi!

    Excel - ben szeretném beilleszteni egy adott cellába a vágólap tartalmát egy macro parancssor részeként, úgy, hogy a mező felirata Link lesz. Jelenleg eddig jutottam, de nem tudom megoldani, hogy a vágólap tartalma bekerüljön a link felirat alá:

    Sub Insert_Description()
    '
    ' Insert_Description Macro
    ' Insert description from Clipboard
    '

    '
    ActiveSheet.Paste
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
    "Most ezt teszi be a link felirat alá, ide kéne a vágólap tartalma" _
    , TextToDisplay:= _
    "Link"
    ActiveCell.Offset(0, 1).Range("A1").Select
    End Sub

    Előre is köszi a helpet!

    a referenciaknal (tools/references) hozza kell adnod: Microsoft Forms 2.0 Object Library'

    Ha nincs a listaban akkor tallozd be ezt: FM20.dll

    Dim DataObj As New MSForms.DataObject
    Dim S As String
    DataObj.GetFromClipboard
    S = DataObj.GetText

  • shev7
    veterán

    Már elnézést, de ha neked ez banális probléma akkor sajnálom, nekem nem, ezért fordultam segítségért.

    Nem vagyok programozó, kényszerből kezdtem el írni az egészet, mert szükséges ahhoz amit csinálok.

    Ehhez a részhez kértem a segítséget:
    ActiveWorkbook.Worksheets("SZUMMA").Cells(CS_SOR, CS_OSZLOP) = xSTR

    Sub CSILLAG()
    Dim CS_SOR As Integer
    Dim OSZLOP As Integer
    Dim CS_OSZLOP As Integer
    Dim cella As Range
    Dim cim_1 As String
    Dim cim_2 As String
    Dim keres As String
    Dim INPUT_STR As String
    Dim SPLITTER() As String
    Dim xDB As Integer
    Dim COUNTNONBLANK As Integer 'file-ok megszámlálásához
    Dim MYRANGE As Range 'file-ok megszámlálásához
    Dim xSZAMOL As Integer 'az .xml file-ok db számát adja vissza
    Dim xSOR As Integer
    Dim xREG As String
    Dim xSTR As String


    'MsgBox ("csillag")

    Worksheets.Add().Name = "SZUMMA"
    keres = "$$$"
    Worksheets("Szamla").Select
    OSZLOP = 38

    ELORE:
    ' MENNYISÉG+TOTAL

    For i = 0 To 15
    Columns(OSZLOP).Select
    Set cella = ActiveWorkbook.Worksheets("Szamla").Columns(OSZLOP).Find(what:=keres)
    If Not cella Is Nothing Then 'ha talál akkor
    Sheets("Szamla").Select
    cella.Activate 'akkor aktiválja a cellát
    cim_1 = ActiveCell.Address
    While Not cim_1 = cim_2
    Set cella = ActiveWorkbook.Worksheets("Szamla").Columns(OSZLOP).FindNext(cella)
    cella.Activate
    cim_2 = ActiveCell.Address
    CS_OSZLOP = ActiveCell.Column
    CS_SOR = ActiveCell.Row

    INPUT_STR = Cells(CS_SOR, CS_OSZLOP)
    SPLITTER = Split(INPUT_STR, "$$$")

    For xDB = LBound(SPLITTER) To UBound(SPLITTER)
    If Right(SPLITTER(xDB), 1) = "-" Then 'ha csak egy negatív van a cellában akkor nem bántja
    SPLITTER(xDB) = (Replace(SPLITTER(xDB), "-", "")) * -1
    SPLITTER(xDB) = Replace(SPLITTER(xDB), ".", ",")
    Else
    SPLITTER(xDB) = Replace(SPLITTER(xDB), ".", ",")
    SPLITTER(xDB) = "+" + SPLITTER(xDB)
    End If
    xSTR = xSTR + SPLITTER(xDB)

    Next xDB
    ActiveWorkbook.Worksheets("SZUMMA").Cells(CS_SOR, CS_OSZLOP) = xSTR
    xSTR = ""
    Wend
    Else
    End If

    OSZLOP = OSZLOP + 7
    Next i

    If OSZLOP = 150 Then
    OSZLOP = 42
    GoTo ELORE
    Else
    If OSZLOP = 154 Then
    OSZLOP = 43
    Else
    End If
    End If

    'EGYSÉGÁR
    For j = 0 To 15
    Columns(OSZLOP).Select
    Set cella = ActiveWorkbook.Worksheets("Szamla").Columns(OSZLOP).Find(what:=keres)
    If Not cella Is Nothing Then 'ha talál akkor
    Sheets("Szamla").Select
    cella.Activate 'akkor aktiválja a cellát
    cim_1 = ActiveCell.Address
    While Not cim_1 = cim_2
    Set cella = ActiveWorkbook.Worksheets("Szamla").Columns(OSZLOP).FindNext(cella)
    cella.Activate
    cim_2 = ActiveCell.Address
    CS_OSZLOP = ActiveCell.Column
    CS_SOR = ActiveCell.Row

    INPUT_STR = Cells(CS_SOR, CS_OSZLOP)
    SPLITTER = Split(INPUT_STR, "$$$")
    ' For xDB = LBound(SPLITTER) To UBound(SPLITTER)
    'Sheets("SZUMMA").Select
    xDB = 0
    ActiveWorkbook.Worksheets("SZUMMA").Cells(CS_SOR, CS_OSZLOP) = SPLITTER(xDB)
    ' Next xDB
    Wend
    Else
    End If

    OSZLOP = OSZLOP + 7
    Next j
    MsgBox ("kész")
    End Sub

    nem ertem minek ehhez a teljes kod.

    Azt mondtad:
    "A lényeg, hogy a benne található műveletek megmaradjanak a cellában, viszont amit mutat az az eredmény legyen.
    Gondoltam, hogy összefűzöm az értéket szimplán egy "=" jellel de nem akar sikerülni. "

    Erre mondtam en, hogy marpedig ez a megoldas, fuzd ossze egy "=" es mukodni fog. A problemad megoldasanak semmi koze a teljes kododhoz.

  • shev7
    veterán

    Sziasztok!

    egy olyan problémám van, hogy string-et tartalmazó változó értékét szeretném visszaalakítani integer típusuvá.
    Pontosabban:
    változó értéke pl:
    a="0-99-56+64"

    A lényeg, hogy a benne található műveletek megmaradjanak a cellában, viszont amit mutat az az eredmény legyen.

    Gondoltam, hogy összefűzöm az értéket szimplán egy "=" jellel de nem akar sikerülni. :O :W

    Tudnátok ebben segíteni?

    akkor probald jobban.

    excel 2003-ban siman mukodik, hogy ha egy egyenloseggel osszefuzom amit irtal, akkor a cellaban a lathato ertek -91 lesz, de a "keplet" megmarad

  • shev7
    veterán

    Szisztok.
    Adtak ki nekünk tételeket amik vizsgán lesznek és ezekböl egy párat meg tudtam csinálni, de a töbségéhez akkár hogy bűvölöm a kódot nem jutok előrébb. Ebbekéne segíteni.
    Feladatok:
    1. bekér egy számot és feltölti vele az aktiv munkalapkijelölt tartományát
    2. ki írja az A1 cella értékét
    3. ki írja az A1:A10 tartomány celláinak összegét
    4. bekér egy számot és beírja az A1-be, a négyzetét meg kiírja
    5. megkeresi az A1:A10 tartományban a 7-et
    6. megkeresi az A1:A10 tartomány legnagyobb elemét
    7. kifesti a bekért szinkódnak megfelelően az A1:A5 tartományt
    8. kölönböző szinekkel festi ki az A1:E5 tartományt
    9. vastag piros betüvel kiemeli a tartomány éegnagyobb elemét
    10. 0 végjelig bekér számokat és a párosakat az A, a páratlanokat a B oszlooba írja be
    11. bekér egy szint (a válasz ''kék'', ''zöld'', vagy ''piros'' lehet) és ezzel a szinnel kifesti az aktuális cellát (más szinnel nme kell foglalkozni, a kék szinkódja 5, a zöldé 4, a pirosé 3)
    12. bekér egy számot, és ennek a számnak megfelelő szinüre fesi sz aktív munkalap A1:C3 tarományát! A makró a bekérés-festés müveletét mindaddig ismételje, amíg 50-nél nagyobb számot nem adunk meg.
    13. bekér 3 számot és elhelyezi őket nagyság szerint az A1:A3 tarományban
    14. megfordítja az A1:A10 értékeit a B1:B10-be
    15. tipizálás: bekér egy értéket és kiírja, hogy szöveg, szám vagy egyéb típusú
    16. a kijelöt tartományban meghatározza a cellák számát, a bennük szereplő értékek összegét és a legkissebb értéket, majd ezeket az adatokat egyetlen szövegdobozban megjeleníti
    17. függvény-, eljárás-hívás, paraméter-átadás

    Tudom hogy sok :O ,de nem szertnék megbukni ebböl. Ezért kéne segíteni.
    Köszi előre is, és bocsi hogy ijenekkel terhelek beneteket.

    [Szerkesztve]

    a legtobb feladatot meg tudod oldani ugy, hogy makrorogzitest csinalsz, es megnezed, hogy mit rogzitett...

  • shev7
    veterán

    Ok, működik, köszi! Csak nem tudom arra használni, amire szerettem volna.

    A login Formnál szeretném megcsinálni azt, hogy kb 2 mp alatt jelenjen meg. Gondoltam, hogy ha a form.opacity tulajdonságára írok egy for/next ciklust, akkor sima ügy lesz. Persze nem működik, de miért?

    Dim n As Integer
    For n = 1 to 100
    Me.Opacity = n
    System.Threading.Thread.Sleep()
    Me.Refresh()
    Next


    Futási időben nem tudom az Opacity tulajdunságot változtatni?

    csak egy otlet: a sleepnek adjal parametert.

Új hozzászólás Aktív témák

Hirdetés