• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

if elseif else dögüsü neden hata veriyor?

Katılım
16 Kasım 2017
Mesajlar
70
Excel Vers. ve Dili
2010 türkçe
merhabalar
macro yazarken söyle bir hatayla karşılaştım;"compile error: else without if" uyarı veriyor.nedenini bir türlü anlayamadım.yardımcı olabilir misiniz?

Sub gunleri_yerlestir()
Dim su As Byte
Dim sa As Byte
Dim say As Byte
Dim i As Byte
Set sy = Worksheets("sayfa1")
Set syf = Worksheets("sayfa2")
say = say + 7
say2 = 12
For i = 1 To 12
If Cells(say, "b") = 1 Or 3 Or 5 Or 7 Or 9 Or 11 Then
For su = 1 To 31
ElseIf Cells(say, "b") = 4 Or 6 Or 8 Or 10 Or 12 Then
For su = 1 To 30
Else
For su = 1 To 28
End If

syf.Cells(8, su) = Mid(sy.Cells(12, 1), say2, 9)
say2 = say2 + 10
End Sub
 
For döngülerinizin next kısımları yok.
Kod:
Sub gunleri_yerlestir()
Dim su As Byte
Dim sa As Byte
Dim say As Byte
Dim i As Byte
Set sy = Worksheets("sayfa1")
Set syf = Worksheets("sayfa2")
say = say + 7
say2 = 12
For i = 1 To 12
If Cells(say, "b") = 1 Or 3 Or 5 Or 7 Or 9 Or 11 Then
    For su = 1 To 31
    Next su
ElseIf Cells(say, "b") = 4 Or 6 Or 8 Or 10 Or 12 Then
For su = 1 To 30
Next su
Else
For su = 1 To 28
Next su
End If

syf.Cells(8, su) = Mid(sy.Cells(12, 1), say2, 9)
say2 = say2 + 10
End Sub
 
Hocam bu macronun sayfa1 a12 deki metinden say2 kadar aralıklarla 9 parça alıp sayfa ikideki hücrelere koyması gerekiyor. Macro hiç hata vermiyor ama hiç bir şeyde yapmıyor.Nedeni nedir acaba?
 
for döngüsünün içerisine bir işlem yazmamışsınız ki.
 
Hocam bu macronun sayfa1 a12 deki metinden say2 kadar aralıklarla 9 parça alıp sayfa ikideki hücrelere koyması gerekiyor. Macro hiç hata vermiyor ama hiç bir şeyde yapmıyor.Nedeni nedir acaba?

Merhaba,

Kodlarınızı görsel olarak düzenlerseniz hatanızı bulmanızda yardımcı olur.
Kodlarınızı düzelttim, tabi ne yapmak istediğinizi tam incelemediğim için, sizin kodlardaki eksiği görün diye ekliyorum.

Döngüler var ama komut yok.

Kod:
Sub gunleri_yerlestir()

    Dim su As Byte
    Dim sa As Byte
    Dim say As Byte
    Dim i As Byte
    Dim sy  As Worksheet
    Dim syf As Worksheet
    
    Set sy = Worksheets("sayfa1")
    Set syf = Worksheets("sayfa2")
    
    say = say + 7
    say2 = 12
    
    For i = 1 To 12
    
        If Cells(say, "b") Mod 2 = 1 Then
            For su = 1 To 31
                ' Kodlarınız
            Next su
        ElseIf Cells(say, "b") Mod 2 = 0 Then
            For su = 1 To 30
                'Kodlarınız
            Next su
        Else
            For su = 1 To 28
                'Kodlarınız
            Next su
        End If
        
    Next i
    
    syf.Cells(8, su) = Mid(sy.Cells(12, 1), say2, 9)
    say2 = say2 + 10
    
End Sub
 
teşekkür ederim hocam.sizin düzeltiğiniz şekilde devam etmeyi deneyeceğim.
 
Geri
Üst