konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Ma ktoś sprytny sposób na ukrycie błędów dzielenia przez zero bez dodawania jeżeli do każdej formuły ?

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

napisz sobie funkcję i obsłuż błąd w VBA

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Wojtek, to nie to samo
jak zrobisz sumę z tak ukrytą wartością będziesz miał bobola

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Przemysław R.:
napisz sobie funkcję i obsłuż błąd w VBA


Panie, to się wie, ale maksymalnie ograniczam vba.

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Wojciech Gardziński:
formatowanie warunkowe
formuła ISERORR(A1) i czcionka na biało

A jak tło jest szare ?

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Henryk Kutypera:
Przemysław R.:
napisz sobie funkcję i obsłuż błąd w VBA


Panie, to się wie, ale maksymalnie ograniczam vba.

no to dłubiesz w formułach, inaczej się nie da

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Dobhra, wiem.
Zrobie makro odpalające się przy sejwie np. zmieniające na sztywno kolor czcionki na kolor tła. Wolę takie jednorazowe odpalenie niż wykorzystywanie funkcji vba w arkuszu.

Dzięks za pomysły.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: Dzielenie przez zero bez jeżeli

Panie Henryku ;-),
Jak już Pan se zamieni kolor czcionki na kolor tła, to można też jakoś wyróżnić, te komórki z błędami np. poprzez wstawienie komentarza do nich np:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim rngUsedSpace As Excel.Range
Dim rngCell As Excel.Range
Const sTEXT_MESSAGE As String = "W tej komórce znajduje się błąd (dzielenie przez 0)"

On Error GoTo Error_Handler
Set rngUsedSpace = Arkusz1.Range("A1").SpecialCells(Type:=xlFormulas, Value:=xlErrors)

For Each rngCell In rngUsedSpace
With rngCell
If .Text = "#DZIEL/0!" Then
If .Interior.ColorIndex = xlColorIndexNone Then
.Font.ColorIndex = 2
Else
.Font.ColorIndex = .Interior.ColorIndex
End If

If .Comment Is Nothing Then
.AddComment Text:=sTEXT_MESSAGE
End If

End If
End With
Next rngCell

Error_Exit:
Set rngUsedSpace = Nothing
Set rngCell = Nothing

Exit Sub

Error_Handler:
MsgBox "Wystąpił błąd nr " & Err.Number & vbTab & vbCr & _
"Makro zostanie przerwane!", _
vbCritical, _
"Błąd"
Resume Error_Exit

End Sub

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Panie Mariuszu;)

tylko że wtedy będę miał nadziubdziane komentarzy a tu właśnie chodzi o estetykę.
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: Dzielenie przez zero bez jeżeli

Henryk Kutypera:
Panie Mariuszu;)

tylko że wtedy będę miał nadziubdziane komentarzy a tu właśnie chodzi o estetykę.

No to w takim wypadku polecam WYSZUKAJ.PIONOWO ;-).

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Henryk Kutypera:
Przemysław R.:
napisz sobie funkcję i obsłuż błąd w VBA


Panie, to się wie, ale maksymalnie ograniczam vba.

Heniek, a co Ci się stało, że ograniczasz VBA?
Za dużo mięcha wpierdzielasz chyba ;->

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Paweł K.:
Henryk Kutypera:
Przemysław R.:
napisz sobie funkcję i obsłuż błąd w VBA


Panie, to się wie, ale maksymalnie ograniczam vba.

Heniek, a co Ci się stało, że ograniczasz VBA?
Za dużo mięcha wpierdzielasz chyba ;->

Zawsze taką filozofię wyznawałem.
Funkcje visualowe raz że są wolniejsze dwa że nie masz listy argumentów jak wpisujesz.

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Henryk Kutypera:
Zawsze taką filozofię wyznawałem.
Funkcje visualowe raz że są wolniejsze dwa że nie masz listy argumentów jak wpisujesz.

to trzeba napisać w .NET - DLL z obsługą COM
działa zadziwiająco szybko

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

A dobre to jest ? W sensie wierzę że szybko działa, ale wygodne w użyciu ? Jak to działa, robisz referencję do dlla ? A jak to rozrzucać użytkownikom ?
Tomek Kuchta

Tomek Kuchta Księgowy, xyz

Temat: Dzielenie przez zero bez jeżeli

Visual Basic .NET
http://support.microsoft.com/kb/302896

Visual Basic 6
http://support.microsoft.com/kb/238228/
http://www.cpearson.com/excel/CreatingCOMAddIn.aspx

w VB6
- Otwierasz nowy ActiveX DLL
- Zakładka: Project/References
+ Microsoft Add-In Designer
+ Mictosoft Excel ##.0 Object Library
- w oknie Properties nadajesz projektowi swoją nazwę MojDll
- dodajesz nowy Moduł class i nadajesz mu nazwę (jw.) cFunkcje
- w kodzie tej class'y

Option Explicit
Implements IDTExtensibility2
Private xlApp As Excel.Application

Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, _
custom() As Variant)

Set xlApp = Application
End Sub

Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, _
custom() As Variant)
Set xlApp = Nothing
End Sub

Private Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)
'Komentarz, aby VB nie usunął metody
End Sub

Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)
'Komentarz, aby VB nie usunął metody
End Sub

Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)
'Komentarz, aby VB nie usunął metody
End Sub

Public Function JeżeliBłąd(odwołanie As Variant, _
Optional vArg As Variant = vbNullString)
xlApp.Volatile ' chociaż nie wydaje mi się to konieczne w tej funkcji
JeżeliBłąd = IIf(IsError(odwołanie), vArg, odwołanie)
End Function

- zakładka: File/ Make Mojdll.dll

W Excelu: (E2007)
- Przycisk Office / Opcje programu Excel / Dodatki / (na dole) Przejdź
- Przycisk: Automatyzacja / znajdź: Mojdll.cFunkcje / OK
- Karta Formuły / wstaw funkcję / wybierz Kategorię: MojDll.cFunkcje ..

W VBA
- albo przez wczesne wiązanie: VBE/Tools/References ...
- albo przez późne wiązanie np:
Sub test()
Dim cls As Object

Set cls = CreateObject("MojDll.cFunkcje")
Debug.Print cls.JeżeliBłąd(15 / 2, "byk")
Set cls = Nothing
End Sub


http://chomikuj.pl/tkuchta1/Dokumenty/MojDll.dll

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Michał Zacierka

Michał Zacierka Junior Demand
Planning Manager

Temat: Dzielenie przez zero bez jeżeli

jak sie nie lubi IF() i chce sie uniknąć VBA, oraz chce sie zachowac mozliwosc sumowania i nie ma nic przeciwko finezji cepa to
- zakladajac dzielna w A1, dzielnik w B1
zaleznie od tego jak sie ma zachowywac w przypadku 0 w B1
* jesli ma zwracać dzielną (tak jak przy dzieleniu przez jeden) to

=A1*(B1-ABS(SIGN(B1))+1)^-1

*jesli ma zwracać zero

=ABS(SIGN(B1))*A1*(B1-ABS(SIGN(B1))+1)^-1


sliczne i przejrzyste :) chłe chłe

konto usunięte

Temat: Dzielenie przez zero bez jeżeli

Tomek Kuchta:
w VB6
- Otwierasz nowy ActiveX DLL
- Zakładka: Project/References
+ Microsoft Add-In Designer
+ Mictosoft Excel ##.0 Object Library
- w oknie Properties nadajesz projektowi swoją nazwę MojDll
- dodajesz nowy Moduł class i nadajesz mu nazwę (jw.) cFunkcje
- w kodzie tej class'y

robienie z tego dodatku to lekka przesada, wystarczy zwykły dll
osoba średnio zaawansowana może mieć problem z ideologicznym pojęciem tworzenia kopii obiektu Excel-a



Wyślij zaproszenie do