2017-07-04 6 views
0

このコードの配列DataInicioで繰り返し日付を見つけるにはどうすればよいですか?私はすべての繰り返しの日付と何度も見つける必要があります。それがちょうど繰り返されることを私が知ることは有用ではない。このVBAコードで繰り返し日付を見つける方法はありますか?

ありがとうございます!

私は理解しようとしていますが、何も動いていません。

Sub EscalaDinâmicaHTA() 

Dim NumHelis As Integer 
Dim DataInicio(1 To 15) As Date 
Dim DataFim As Date 
Dim ContData As Double 
Dim LinHeliInicial As Integer 
Dim i As Integer 
Dim j As Integer 
Dim k As Integer 
Dim a As Integer 
Dim b As Integer 


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

a = 1 

Do While LinHeliInicial <= LinTotal 

i = 2 
j = 3 
k = 4 

Do While i <= 14 And j <= 15 And k <= 16  '26,27,28 

DataInicio(a) = Worksheets(1).Cells(LinHeliInicial, i).Value 
ContData = DateValue(DataInicio(a)) 
ContData = Val(ContData) 

DataFim = Worksheets(1).Cells(LinHeliInicial, j).Value 
DataFim = DateValue(DataFim) 

Duracao = DataFim - DateValue(DataInicio(a)) 
Worksheets(1).Cells(LinHeliInicial, k).Value = Duracao + 1 
Duracao = ContData + Duracao 
Duracao = Val(Duracao) 

ContData = ContData - 43072   '43072 é a descontar as colunas A,B,C,D,etc até ao começo do calendário 
Duracao = Duracao - 43072 


Do While ContData <= Duracao 
Cells(LinHeliInicial, ContData).Interior.ColorIndex = 4 
ContData = ContData + 1 
Loop 

k = k + 3 
j = j + 3 
i = i + 3 

a = a + 1 

Loop 

LinHeliInicial = LinHeliInicial + 1 

Loop 


End Sub 
+0

あなたは私たちを見ることができます簡素化コード、追加されたコメントは、どのようにあなたのExcelでデータを保存しているのですか? –

答えて

0

これは、配列内の重複数を出力します。同じ要素が複数回出現する場合は、同じ要素を複数回出力することに注意してください。これは、別の配列のチェックされた要素を追跡することによって簡単に修正することができ、前にチェックされていない場合にのみチェックする(すなわち、チェックのためにユニークなエントリを持つ配列を作る)。

Dim counter As Integer 
Dim varElement1 As Variant 
Dim varElement2 As Variant 

'get element within array 
For Each varElement1 In array 
    'reset counter 
    counter = 0 
    For Each varElement2 In array 
     'compare varElement1 with each element of array 
     If varElement2 = varElement1 Then 
      'increase counter if match was found (1 will alway be found -> the element itself) 
      counter = counter + 1 
     End If 
    Next varElement2 
    'output number if more than 1 (more than itself) was found 
    If counter > 1 Then 
     Debug.Print varElement1 & " occured " & counter " times" 
    End If 
Next varElement1 

編集:

+0

私はそれをどのように実装すべきですか?私は最後のループの後に置き、DataInicioに配列を変更しましたが、何もしません。 – MiguelLeal

+0

[即時ウィンドウ](https://www.excelcampus.com/vba/vba-immediate-window-excel/)の出力を確認しましたか?すべての変数をインスタンス化(薄暗い)しましたか? –

+0

はい...「エラー時に次回からレジュームする」を終了してからランタイムエラー1004が発生しました – MiguelLeal

関連する問題