Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Még mindig nem jó. A változások csak akkor következhetnek be a duplaklikkre, ha az A oszlopban még nincs pipa.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveSheet.Protect Password:="jelszo", UserInterfaceOnly:=True Application.EnableEvents = False Dim rng As Range
If Range(Target.Row, 1) <> "ü" Then If Not Intersect(Target, Me.Range("F28:F2530")) Is Nothing Then Set rng = Range(Intersect(Me.Rows(16), Target.EntireColumn), Target.Offset(-1)) If rng Is Nothing Then Exit Sub Target.Value = Application.WorksheetFunction.Max(rng) + 1 End If
If Target.Column = 1 Then Range(Target.Address) = "ü" With Selection.Font .Name = "Wingdings" .Bold = True .ColorIndex = 3 End With Range("A" & Target.Row & ":V" & Target.Row).Select With Selection .Font.ColorIndex = 3 .Locked = True End With End If
If Target.Column = 3 Or Target.Column = 4 _ Or Target.Column = 12 Then Range(Target.Address) = Date
If Target.Column = 18 Then Range(Target.Address) = "IGEN" End If
Cancel = True Application.EnableEvents = True End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveSheet.Protect Password:="jelszo", UserInterfaceOnly:=True
On Error Goto Hiba_esetén Application.EnableEvents = False
Dim rng As Range If Not Intersect(Target, Me.Range("F28:F2530")) Is Nothing Then Set rng = Range(Intersect(Me.Rows(16), Target.EntireColumn), Target.Offset(-1)) If rng Is Nothing Then Exit Sub Target.Value = Application.WorksheetFunction.Max(rng) + 1 End If
If Target.Column = 1 Then ActiveCell = "ü" With Selection.Font .Name = "Wingdings" .Bold = True .ColorIndex = 3 End With Range("A" & Target.Row & ":V" & Target.Row).Select With Selection .Font.ColorIndex = 3 .Locked = True End With End If
If Target.Column = 3 Or Target.Column = 4 Or Target.Column = 12 Then _ Range(Target.Address) = Date
If Target.Column = 18 Then Range(Target.Address) = "IGEN"
Cancel = True
Hiba_esetén: Application.EnableEvents = True End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveSheet.Protect Password:="jelszo", UserInterfaceOnly:=True Application.EnableEvents = False
Dim rng As Range If Not Intersect(Target, Me.Range("F28:F2530")) Is Nothing Then Set rng = Range(Intersect(Me.Rows(16), Target.EntireColumn), Target.Offset(-1)) If rng Is Nothing Then Exit Sub Target.Value = Application.WorksheetFunction.Max(rng) + 1 End If
If Target.Column = 1 Then ActiveCell = "ü" With Selection.Font .Name = "Wingdings" .Bold = True .ColorIndex = 3 End With Range("A" & Target.Row & ":V" & Target.Row).Select With Selection .Font.ColorIndex = 3 .Locked = True End With End If
If Target.Column = 3 Or Target.Column = 4 Or Target.Column = 12 Then _ Range(Target.Address) = Date
If Target.Column = 18 Then Range(Target.Address) = "IGEN"
Cancel = True Application.EnableEvents = True End Sub
Nincs ezzel semmi baj, csak előtte a másolandó területet ki kell jelölni, és másolni, majd az új helyre állva kell indítani a makrót – akár bill. kombinációval. Én is sűrűn alkalmazom, de a végére még betettem a kijelölés megszüntetését.
Szeretnék egy érték beillesztés makrót, hogy majd a hozzárendelt billentyűkombinációval működjön az érték beillesztés, de hibaüzenetet kapok a futtatáskor. Mi a baj ezzel a makróval?
Sub PasteValue() ' ' PasteValue Makró ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveSheet.Protect UserInterfaceOnly:=True
If Target.Column = 1 Then ActiveCell = "ü" With Selection.Font .Name = "Wingdings" .Bold = True .ColorIndex = 3 End With Range("A" & Target.Row & ":U" & Target.Row).Select With Selection .Font.ColorIndex = 3 .Locked = True End With End If
If Target.Column = 3 Then Range(Target.Address) = Date End Sub
Ha az A oszlopban (If Target.Column = 1) klikkelsz duplán, akkor beírja a pipát, és zárolja a sor celláit az A:U oszlopokban.
Ha viszont a C oszlopban kattintasz duplán, akkor a klikkelés helyére beírja a mai dátumot.
Talán egyszerűbb lenne letölteni egy ingyenes pdf nyomtató drivert, ettől kezdve a pdf nyomtatás külön nyomtatóként kiválasztható. Én ezt használom, ha máshova kell átvinni fájlokat, nem kell beállítani nyomtatási képet az aktuális nyomtatóhoz.
Mit szólsz ehhez a megoldáshoz? Megszünteted a jelölőnégyzeteket. Egy-egy cellán duplaklikkre piros pipa jel jelenik meg, az aktuális sor A:U tartománya zárolt lesz, a karakterek szintén piros színben pompáznak?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveSheet.Protect UserInterfaceOnly:=True ActiveCell = "ü" With Selection.Font .Name = "Wingdings" .Bold = True .ColorIndex = 3 End With Range("A" & Target.Row & ":U" & Target.Row).Select Selection.Font.ColorIndex = 3 Selection.Locked = True End Sub
Egy csoporton belül a szerveren elhelyezett táblázatot (egyfajta iktatót) soronként töltünk ki.
Amikor a tényleges iktatás megtörténik, és minden rendben van a beírt adatokkal, akkor a csoportvezető pipálná, hogy rendben (ez egyben át is szinezné az adott sort, hogy feltűnőbb legyen), és onnan kezdve nem lehetne módosítani az adott sort. Tehát a pipálásnak kell az utolsónak lenni.
Próbáld meg úgy átrendezni az oszlopaidat, hogy először kelljen a négyzetet jelölni, és utoljára adatot bevinni a billentyűzetről. Ehhez az utolsó oszlophoz igazítsd a makrót.