Just nu i M3-nätverket
Gå till innehåll
Tommy H

Excel VBA vilkor i If-sats

Rekommendera Poster

Hej!

Varför kan jag inte lägga in ett vilkor för att kolla om en del av innehållet i min cell innehåller nämnd text?

I koden nedan så skulle jag vilja ha ett antal förutsättningar (fler än dom som jag har med här) och även då ha med det sista att om cellen innehåller något som börjar på "IN" och innehåller mer (typ en siffra är det) så gör då det och det...

 

  If Application.WorksheetFunction.CountBlank(rng3upp) = 3 _
        And .Offset(0, -8) <> ""  And .Offset(2, 0)= ("IN" & & "*") Then

 

Vad gör jag för fel då koden ej köper vilkoret!

(allt köps utom sista vilkoret)

/Tommy

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Det känns lite spontant som att du inte har ett objekt knutet till Offset, jag tror du behöver jobba lite med något i stil med:

Du får förstås anpassa din Range utifrån dina förutsättningar.

 

Dim rng3upp As Excel.Range
Set rng3upp = Range("A1:C5")

If Application.WorksheetFunction.CountBlank(rng3upp) = 3 _
        And rng3upp.Offset(0, -8) <> ""  And rng3upp.Offset(2, 0)= ("IN" & & "*") Then


.
.
.
.

End If

 

Lite läsvärt om Cells och Ranges på följande länk:

The Complete Guide to Ranges and Cells in Excel VBA / Excel Macro Mastery.com

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Mja, jag har kanske varit lite otydlig.

Kodraderna är ju utplockade från sin helhet, då det jag går bet på är just det sista villkoret.

Jag vill kolla om ett antal celler runt min "offset" är tomma eller innehåller något.

Det är den sista kod-radens sista And som jag inte får att fungera.

Jag vill ju att oavsett om det står "IN2" eller "IN5" på .offset (2,0) så ska det tas med i If-satsen.

Har jag koden enligt nedan, så accepteras inte villkoret även om allt uppfylls på Excelbladet.

Jag misstänker att jag inte kan ha med en "text kontroll" i If-stasen men jag vet som sagt inte....

 

    Sub IN_Reserver()

Dim C As Range
Dim d As Range
Dim antal As Integer
antal = 0
Dim firstAddress As String
With Worksheets("Prenad").Range("K:K")
Set C = .Find("IN" & "*", LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
firstAddress = C.Address

Do
On Error GoTo 90
With C
 Dim rng3upp As Range
 Set rng3upp = C.Offset(-3, -8).Resize(3, 1) '3 rader upp
 Dim rng3ner As Range
 Set rng3ner = C.Offset(1, -8).Resize(3, 1) '3 rader ner

    'Kollar om det finns 3st tomma rader ovanför.
    If Application.WorksheetFunction.CountBlank(rng3upp) = 3 _
        And .Offset(0, -8) <> "" And .Offset(0, 2) = "" And .Offset(1, 1) = "" And .Offset(0, 6) = "" And .Offset(2, 0) = "IN" & "*" Then

bla, bla, bla

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Prova att använda LIKE-operator;

 

    If Application.WorksheetFunction.CountBlank(rng3upp) = 3 _
        And .Offset(0, -8) <> "" And .Offset(0, 2) = "" And .Offset(1, 1) = "" _
        And .Offset(0, 6) = "" And .Offset(2, 0) Like "IN*" Then

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...