vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 29 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

W jaki sposób ignorować istniejące formuły?


otwartyotwarty rozpoczął: jamanow postów: 4



napisał: Trebor
postów: 1209


umieszczony:
31 lipca 2012
14:00

edytowany:
31 lipca 2012
15:12

  
IsEmpty zwraca prawda gdy w komórce brak wpisów. Zapis ="" zwraca prawda wtedy gdy w komórce jest formuła, która zwraca pusty ciąg "" lub brak jest wpisów. Sądziłem, że chodzi o takie rozróżnienie.

Jeśli chodzi o sprawdzenie czy w komórce jest wpisana formuła to można sprawdzić czy odczytany ciąg
MsgBox ExecuteExcel4Macro("get.formula(ACTIVE.CELL())")
MsgBox ExecuteExcel4Macro("GET.CELL(6,!R1C1)")


zaczyna się od znaku równości.
lub
MsgBox CStr(Range("A1").Formula)

napisał: jamanow
postów: 69


umieszczony:
31 lipca 2012
13:22

  
Jeżeli
If ActiveCell = "" Then


Traktuje puste cele tak samo jak cele zawierające formel typu:
=IF(LETARAD( $B32;smst;3)>0;LETARAD( $B32;smst;3);"")

to tak.
Następne pytanie jak ożyć to zamiast
Do
    If IsEmpty(ActiveCell) = False Then
        ActiveCell.Offset(1, 0).Select
    End If
    Loop Until IsEmpty(ActiveCell) = True

napisał: Trebor
postów: 1209


umieszczony:
31 lipca 2012
12:04

  
Pytasz o wartość:
If ActiveCell = "" Then

napisał: jamanow
postów: 69


umieszczony:
31 lipca 2012
11:12

edytowany:
31 lipca 2012
11:16

  
Procedura:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Application.ScreenUpdating = False
Dim MySheet As Object
Dim myRn As Range

Set MySheet = ThisWorkbook.ActiveSheet
Set myRn = MySheet.Range("C30")
    myRn.Select
    Do
    If IsEmpty(ActiveCell) = False Then
        ActiveCell.Offset(1, 0).Select
    End If

    Loop Until IsEmpty(ActiveCell) = True


    ActiveCell.Value = Me.ListBox1.Column(3)
    ActiveCell.Offset(0, 1) = Me.ListBox1.Column(4)
    ActiveCell.Offset(0, 2) = Me.ListBox1.Column(5)
    ActiveCell.Offset(0, 3) = Me.ListBox1.Column(6)
    ActiveCell.Offset(0, 4) = Me.ListBox1.Column(7)
    ActiveCell.Offset(0, 5) = Me.ListBox1.Column(8)

    myRn.Select
Application.ScreenUpdating = True
End Sub




W obszarze, w którym procedura wpisuje dane z ListBox mam formuły ukryte dla użytkownika przy pomocy JEŻELI. Typu:
=JEZELI(LETARAD( $B33;smst;2)>0;LETARAD( $B33;smst;2);"")


Jak zrobić ażeby procedura wpisu danych z ListBox1_DblClick ignorowała natrafione formuły i traktowała napotkane cele jako puste, a nie przeskakiwała je.


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z