Keresés

Részletes keresés

Törölt nick Creative Commons License 2010.11.27 0 0 13490

Ja, vagy úgy, akkor itt egy következő javaslat:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 

  figyel = 1
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      If i - figyel >= 7 Then
        Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
        figyel = i
      Else: figyel = i
      End If
    End If
  Next i
 
End Sub

Előzmény: Delila10 (13489)
Delila10 Creative Commons License 2010.11.27 0 0 13489

Ezt én úgy értelmezem, hogy nem pihenőnap nem lehet több, vagyis ha a sor elején több nem P-s cella van, az sem jó. Mondjuk csak a 8. napot akarják kiadni szabadnapnak.

Lehet, hogy nem jó a meglátásom.

Előzmény: Törölt nick (13488)
Törölt nick Creative Commons License 2010.11.27 0 0 13488

Szia!

 

Nem értem. A nem "P"-t tartalmazó cellákat miért kellene színezni? A feladatban nem az van, hogy a "P"-k közötti cellákat kell színezni, ha az több mint 6?

Előzmény: Delila10 (13487)
Delila10 Creative Commons License 2010.11.27 0 0 13487

Szia!

 

Ha a sor 6, vagy több nem P-t tartalmazó cellával kezdődik, vagy végződik, azokat nem színezi a makró.

Előzmény: Törölt nick (13484)
Törölt nick Creative Commons License 2010.11.27 0 0 13486

Rosszul látod ;-)

Előzmény: Törölt nick (13485)
Törölt nick Creative Commons License 2010.11.27 0 0 13485

Nem vagyok passzív, csak mostanában annyi dolgom van, hogy nem nagyon marad időm ilyesmire.

De úgy látom, nagyon jól elvagytok nélkülem is :)

Előzmény: Törölt nick (13477)
Törölt nick Creative Commons License 2010.11.27 0 0 13484

"ennek is az a hibája, hogy a sorok elejét és végét nem rúzsozza ki."

 

Nem értem mire gondolsz

Előzmény: Delila10 (13483)
Delila10 Creative Commons License 2010.11.27 0 0 13483

Ez nagyon jól néz ki, de ennek is az a hibája, hogy a sorok elejét és végét nem rúzsozza ki.

Ha megoldod ezeket, nem bajlódom az enyémmel, úgyis csak este felé leszek számítógép közelében. Az is jó, hogy eseményt kezelsz, nem kell külön indítani.

 

Az én makrómnál a sor eleji ellenőrzéshez a Next oszlop mögé be kell tenni a t=False sort.

 

Előzmény: Törölt nick (13479)
MixM Creative Commons License 2010.11.26 0 0 13482

Nagyon szépen köszönöm mindenkinek az ötleteket és a segítséget!!!

Örülök, hogy létezik még olyan fórum, ahol nem csak lehet segítséget kérni, de kapok is:)

Mindenkinek további szép napot!!!

SQLkerdes Creative Commons License 2010.11.26 0 0 13481

De az enyém végéről nem maradt le!

 

Na, jóccakát mindenkinek én mára szögre akasztom a klaviatúrát!

Előzmény: Törölt nick (13480)
Törölt nick Creative Commons License 2010.11.26 0 0 13480

Csupa kisbetűvel írtam, igaz a végéről lemaradt a ;-))

Előzmény: SQLkerdes (13478)
Törölt nick Creative Commons License 2010.11.26 0 0 13479

Remélem, már ez is egy jó megoldás lesz:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 

  figyel = 0
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      Select Case figyel
        Case 0
          figyel = i
        Case Else
          If i - figyel >= 7 Then
            Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
            figyel = i
          Else: figyel = i
          End If
      End Select
    End If
  Next i
 
End Sub

Előzmény: Törölt nick (13470)
SQLkerdes Creative Commons License 2010.11.26 0 0 13478

Jól!

De azért nem kell velem ordítani :-)

 

(ezt a technikát már használtam máskor, de validation-nel nem tűnik működni, hm...)

Előzmény: Törölt nick (13476)
Törölt nick Creative Commons License 2010.11.26 0 0 13477

Jimmy! Nagyon passzív vagy mostanában.

Előzmény: Törölt nick (13427)
Törölt nick Creative Commons License 2010.11.26 0 0 13476

Jól sejtem, hogy nem próbáltad ki?

Előzmény: SQLkerdes (13473)
Törölt nick Creative Commons License 2010.11.26 0 0 13475

Próbáld ki ezt, nálam hibakezelés nélkül sem akad ki:

 

ActiveSheet.UsedRange.Validation.Delete

Előzmény: wawabagus (13468)
Törölt nick Creative Commons License 2010.11.26 0 0 13474

Ez nem jó a validációs listák megkereséséhez?:

 

.SpecialCells(xlCellTypeAllValidation).Select

 

makrórögzítő...

(ctrl+g, irányított, Adatérvényesítés bejelöl...)

 

 

Előzmény: wawabagus (13472)
SQLkerdes Creative Commons License 2010.11.26 0 0 13473

Ez a kód itt (a lenti linkről másolva):

Sub a()

Dim r As Range

Set r = Intersect(ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllValidation), ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible))

If Intersect(ActiveCell, r) Is Nothing Then MsgBox "Cell has no validation"

Else MsgBox "Cell has validation"

End If

End Sub

 

Szerintem ha a fenti Activecell object helyett a worksheets(akarmennyi).usedrange objectet használod, akkor is működik (azt nézi meg, hogy van-e közös halmaza két range-nek, a range-ek akármekkorák lehetnek).

 

Szóval nem kell cellánként megnézni.

Előzmény: wawabagus (13472)
wawabagus Creative Commons License 2010.11.26 0 0 13472

Szia!

Köszi.

Pont ezen a site-on jártam már és olvasgattam. De nem találtam ott megoldást.

 

Megnézem mégegyszer, de amiket kínálgatnak az cellánkénti ellenőrzés...

 

Az a baj, hogy kb 50 db fájlt akarok összemásolni egy helyre és ha elkezdi őket cellánként ellenőrizgetni...háááát...

 

Na, hétfőn újult erőkkel :-)))...

 

Köszi a segítséget!!

 

És jó hétvégét mindenkinek!!

Y

 

Előzmény: SQLkerdes (13471)
SQLkerdes Creative Commons License 2010.11.26 0 0 13471

Itt:  http://www.mrexcel.com/forum/showthread.php?t=353536 van néhány érdekes technika a validation list létezésének ellenőrzésére.

Nem tűnik nativ lehetőségnek...

Előzmény: wawabagus (13469)
Törölt nick Creative Commons License 2010.11.26 0 0 13470

De igen, próbáltam, de szerettem volna egy másik megoldást is.

Második nekifutásra ezt szögeltem össze:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 'oszlopok száma az aktuális sor értékei alapján
  figyel = 0
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      Select Case figyel
        Case 0
          figyel = i
        Case Else
          If i - figyel >= 7 Then
            Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
            figyel = i
          End If
      End Select
    End If
  Next i
 
End Sub

 

  

 

Előzmény: Delila10 (13457)
wawabagus Creative Commons License 2010.11.26 0 0 13469

Fordítva:

 

 

    On Error Resume Next

    Selection.validation.Delete
   

Előzmény: wawabagus (13468)
wawabagus Creative Commons License 2010.11.26 0 0 13468

Szia!

 

Sehol nem találtam arra kódot hogyan lehet megállapítani van-e validációs lista vagy sem a sheeten...

 

De arra gondoltam, hogy be lehetne vetni egyszerűen egy hiba kezelést...

Ha hiba merül fel /mert ugye nincs mit törölni/, akkor menjen tovább

De nem tudom jó helyre raktam-e...vagy tiszta baromság amivel próbálkozom...

 

 

    Workbooks(1).Activate
    Cells.Select
    
   
    Selection.validation.Delete
    On Error Resume Next

    
    Workbooks(i).Sheets(1).UsedRange.Copy

 

Szerinted van ennek értelme?

Nem működik :-DDD, de nem vagyok biztos abban, hogy emiatt

Előzmény: SQLkerdes (13462)
Törölt nick Creative Commons License 2010.11.26 0 0 13467

Megj.: Ebbe bele kéne tenni azt is feltételes formázással, hogy a hétvégék oszlopa automatikusan sárga legyen

Előzmény: Törölt nick (13466)
Törölt nick Creative Commons License 2010.11.26 0 0 13466

Ezt az egyszerű képletet  feltételes formázásnak kell megadnod (a C4 cellára állva január munkalapon):

=HA(C4="P";HOL.VAN("P";D4:AG4;0);6)>6

Ezután a formátum másolóval ("ecset") másold át a teljes táblázatra.

Azok a "P"-k lesznek pirosak, amelyek után hatnál több munkanap van.

Az eredmény ugyanaz, mintha a hatnál több munkanap lenne piros: Rögtön látni fogod hol van hiba.

Visszaküldöm a file-t

 

Előzmény: MixM (13464)
Delila10 Creative Commons License 2010.11.26 0 0 13465

Azt, hogy mi történt az 5. és 36. sorban, csak a füzetben lehetne megnézni.

Volt két hiányosság a makrómban, az elsőt kijavítottam, a másodikra most nem érek rá.

Az első hiba, hogy ha a sorban az első P előtt 6, vagy annál több nem P van, nem színezte a sor elejét.

A második hiba, hogy a sor végét sem, ha az utolsó 6, vagy annál több cella nem P.

 

Sub mm()
    Dim oszlop As Integer, uoszlop As Integer, sor As Integer, usor As Integer
    Dim kezd As Integer, veg As Integer, t As Boolean
    
    Cells().Interior.ColorIndex = xlNone
    uoszlop = ActiveSheet.UsedRange.Columns.Count
    usor = ActiveSheet.UsedRange.Rows.Count
    
    For sor = 1 To usor
        For oszlop = 1 To uoszlop
            If oszlop > 5 And t = False And Cells(sor, oszlop) = "P" Then
                Range(Cells(sor, 1), Cells(sor, oszlop - 1)).Interior.ColorIndex = 3
                kezd = oszlop + 1
            End If
            
            If Cells(sor, oszlop) = "P" And t = False Then
                kezd = oszlop
                t = True
                GoTo Kov
            End If
            
            If Cells(sor, oszlop) = "P" And t = True Then
                veg = oszlop
                If veg - 1 - kezd > 5 Then
                    Range(Cells(sor, kezd + 1), Cells(sor, veg - 1)).Interior.ColorIndex = 3
                End If
                kezd = veg
            End If
            
          
Kov:
        Next oszlop
    Next sor
End Sub

Előzmény: MixM (13464)
MixM Creative Commons License 2010.11.26 0 0 13464

Azt hittem egyszerűbb a feladat, de lehet hogy csak nekem tűnik bonyolultnak amiket írtok. Mindenesetre örülök és köszönöm, hogy foglalkoztok vele és próbáltok segíteni:)

Lefuttattam a makrót, az első 5 sorban ki is pirosította a hibát(szándékosan tettem bele párat:)), de a többin nem jelzi a problémát, majd a 36. sorban ismét pirosított:)

 

Azt hiszem el kezdek komolyabban foglalkozni a makrókkal:)

Előzmény: Delila10 (13457)
wawabagus Creative Commons License 2010.11.26 0 0 13463

Ahaaaaaaaaaaaa...:-)

 

Milyen hülye ez a VBA

 

:-D

 

Köszi!

 

Előzmény: SQLkerdes (13462)
SQLkerdes Creative Commons License 2010.11.26 0 0 13462

Csak tippelek, de azt gondolom, hogy a delete előtt akad el a kivitelezés.

VBA benéz a fiókba, turkál mert keresi a Validation object-et.  Nem találja, panaszkodik.

Annyi esze nincs, hogy észrevegye, hogy úgyis törölni akarod, szóval lényegében nem számít, hogy nincs.  Mivel a VBA nem a lényeget nézi, hanem a formális parancsot, kiakad. 

Előzmény: wawabagus (13461)
wawabagus Creative Commons License 2010.11.26 0 0 13461

Sziasztok!

 

SQL Kérdés és boraka köszi a segítséget!!!

Tök jó így...kijavítottam és már szuperul működik.

 

 

De én egyszerűen nem értem a logikáját az excelnek.

 

Ha ez a kód normálisan működik:

 

    Workbooks(1).Activate
    Cells.Select
    Selection.validation.Delete

 

Akkor a for next ciklusban azért nem működik, mert szintén nem biztos hogy mindenhol van validációs lista?

 

Ha nincs, akkor nem tud törölni?

 

 

 

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!