Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环中的VBA注释_Excel_Vba_Loops_Range_Comments - Fatal编程技术网

Excel 循环中的VBA注释

Excel 循环中的VBA注释,excel,vba,loops,range,comments,Excel,Vba,Loops,Range,Comments,我包括了整个代码的标题,只是为了让大家了解我有多少变量,以及我在这方面有多糟糕。目前代码工作得很好!尝试在复制阶段添加注释。这段代码没有保存大量的数据,因为它会使它严重陷入困境。一旦引用循环,除非我创建一个新的整页来挖掘它,否则就无法将其取回。而Vlookup将通过许多细胞发挥作用 这需要一系列即将到期的事件在日历上以1标记到期日。calander运行了28天,然后下降到下个月(确切地说是28天)开始运行。我可以得到第一行中任何内容的注释,但是当它试图跳到第二个月时,它会错误地说出未定义的变量。

我包括了整个代码的标题,只是为了让大家了解我有多少变量,以及我在这方面有多糟糕。目前代码工作得很好!尝试在复制阶段添加注释。这段代码没有保存大量的数据,因为它会使它严重陷入困境。一旦引用循环,除非我创建一个新的整页来挖掘它,否则就无法将其取回。而Vlookup将通过许多细胞发挥作用

这需要一系列即将到期的事件在日历上以1标记到期日。calander运行了28天,然后下降到下个月(确切地说是28天)开始运行。我可以得到第一行中任何内容的注释,但是当它试图跳到第二个月时,它会错误地说出未定义的变量。任何帮助都将不胜感激

 Sub Planner()
 Dim data As Worksheet
 Dim Cal As Worksheet
 Dim C1, C2, C3, C4, C5, C6, C7, C8, C9 As Worksheet

 Dim x1C, x2C, x3C, x4C, x5C, x6C, x7C, x8C, x9C As Integer
 Dim y1C, y2C, y3C, y4C, y5C, y6C, y7C, y8C, y9C  As Integer
 Dim Cal1C, Cal2C, Cal3C, Cal4C, Cal5C, Cal6C, Cal7C, Cal8C, Cal9C As Integer
 Dim a1C, a2C, a3C, a4C, a5C, a6C, a7C, a8C, a9C As Integer
 Dim b1C, b2C, b3C, b4C, b5C, b6C, b7C, b8C, b9C As Integer
 Dim c1c, c2c, c3c, c4c, c5c, c6c, c7c, c8c, c9c As Integer


 Dim Com1C, Com2C, Com3C, Com4C, Com5C, Com6C, Com7C, Com8C, Com9C As Integer
 Dim Dest1C As Range
 Dim MDLDate As Integer


 Set data = ThisWorkbook.Sheets("Data")
 Set Cal = ThisWorkbook.Sheets("Planner")
 Set C1 = ThisWorkbook.Sheets("C1")
 Set C2 = ThisWorkbook.Sheets("C2")
 Set C3 = ThisWorkbook.Sheets("C3")
 Set C4 = ThisWorkbook.Sheets("C4")
 Set C5 = ThisWorkbook.Sheets("C5")
 Set C6 = ThisWorkbook.Sheets("C6")
 Set C7 = ThisWorkbook.Sheets("C7")
 Set C8 = ThisWorkbook.Sheets("C8")
 Set C9 = ThisWorkbook.Sheets("C9")


 Cal1C = C1.Range("A500").End(xlUp).Row

 'sets date MDL was pulled for C2 puts on data page
 data.Cells(1, 7) = C1.Cells(Cal1C, 12).Value - C2.Cells(Cal1C, 13)


 For x1C = 2 To Cal1C 'x = rows y = columns
 For y1C = 50 To 50
    If C1.Cells(x1C, 13) < 1 Then
        data.Cells(18, 8) = "X"
            GoTo next1C
    Else: c1c = C1.Cells(x1C, 13)
        End If

         a1C = Int(c1c / 28) * 24 ' gets the interval of the reference for the column address
         aa1c = a1C + 8 'takes the cell address for column and offsets it to fit cal
         b1C = c1c Mod 28 'get the remainder of the reference for row address
         bb1c = b1C + 3 'takes the cell address for row and offsets it to fit cal
         Set Dest1C = Cal.Cells(aa1c, bb1c) 'tried to set the cell output as a reference but all it equals is 1 not the address. i suspect this is part of my problem. 
         Com1C = C1.Cells(x1C, 8) ' this is text i want in the comment
         Cal.Cells(aa1c, bb1c).Value = 1 ' this is what actually places the number on the calendar based on the cell reference. with the exception of the 1 this is where i want the comments Comm1C.

         With Dest1C
             .AddComment
             .Comment.Text Text:=Com1C
         End With

         Next y1C
 next1C:
     Next x1C
Sub-Planner()
Dim数据作为工作表
Dim Cal As工作表
尺寸C1、C2、C3、C4、C5、C6、C7、C8、C9作为工作表
尺寸x1C、x2C、x3C、x4C、x5C、x6C、x7C、x8C、x9C为整数
作为整数的尺寸y1C、y2C、y3C、y4C、y5C、y6C、y7C、y8C、y9C
将Cal1C、Cal2C、Cal3C、Cal4C、Cal5C、Cal6C、Cal7C、Cal8C、Cal9C设置为整数
尺寸a1C、a2C、a3C、a4C、a5C、a6C、a7C、a8C、a9C为整数
尺寸b1C、b2C、b3C、b4C、b5C、b6C、b7C、b8C、b9C为整数
尺寸c1c、c2c、c3c、c4c、c5c、c6c、c7c、c8c、c9c为整数
尺寸Com1C、Com2C、Com3C、Com4C、Com5C、Com6C、Com7C、Com8C、Com9C为整数
调暗范围
Dim MDLDate作为整数
设置数据=此工作簿.Sheets(“数据”)
Set Cal=此工作簿.Sheets(“计划器”)
Set C1=此工作簿。工作表(“C1”)
Set C2=此工作簿。工作表(“C2”)
Set C3=此工作簿.工作表(“C3”)
Set C4=此工作簿。工作表(“C4”)
集合C5=本工作簿。工作表(“C5”)
Set C6=此工作簿.Sheets(“C6”)
设置C7=ThisWorkbook.Sheets(“C7”)
设置C8=ThisWorkbook.Sheets(“C8”)
设置C9=ThisWorkbook.Sheets(“C9”)
Cal1C=C1.范围(“A500”).结束(xlUp).行
'设置数据页上C2 puts的MDL提取日期
数据。单元格(1,7)=C1。单元格(Cal1C,12)。值-C2。单元格(Cal1C,13)
对于x1C=2到Cal1C'x=行y=列
对于y1C=50至50
如果C1.单元(x1C,13)<1,则
数据。单元格(18,8)=“X”
转到下一个
Else:c1c=C1.单元(x1C,13)
如果结束
a1C=Int(c1c/28)*24'获取列地址的引用间隔
aa1c=a1C+8'获取列的单元格地址并将其偏移以适合cal
b1C=c1c Mod 28'获取行地址的其余引用
bb1c=b1C+3'获取行的单元格地址并将其偏移以适合cal
Set Dest1C=Cal.Cells(aa1c,bb1c)'试图将单元格输出设置为引用,但它等于1而不是地址。我怀疑这是我问题的一部分。
Com1C=C1.Cells(x1C,8)“这是我想要在注释中显示的文本
Cal.Cells(aa1c,bb1c).Value=1'这是根据单元格引用将数字实际放置在日历上的位置。除了1之外,这是我想要评论的地方。
用Dest1C
.AddComment
.Comment.Text文本:=Com1C
以
下一个y1C
下一步1c:
下一个x1C

首先尝试检查.Comment,如果没有.AddComment,则只检查.AddComment。用新文本追加当前注释

     With Dest1C
         If .Comment Is Nothing Then .AddComment
         .Comment.Text Text:=.Comment.Text & Com1C & vbLf
     End With

像这样的声明:Dim y1C、y2C、y3C、y4C、y5C、y6C、y7C、y8C、y9C作为整数只有最后一个是整数,其他的都是隐式变量。此外,请使用Long not Integer。Dim y1C为长,y2C为长等等…哪一行专门生成错误消息,确切的错误消息是什么?这样的编号变量使我认为应该使用数组。这样一组整合的数据使我可以访问
。而
对于y1C=50到50
y1C
没有在循环中使用?我从谷歌博士或YouTube教授那里学到的大部分代码。我100%同意这是笨重的,不是最简化的方法。但是嘿!它工作!!!所以我犹豫不决,而且(老实说,我没有足够的智慧来修复它)什么是vbLf?原始注释?它是一个换行字符,又名chr(10)。它把每一条额外的评论放在一行上。。如果我能通过这东西送一箱啤酒,我会的!你是我的英雄!5个小时的谷歌搜索和无声的哭泣,你用4行代码修复了它。我喜欢/讨厌这种东西。非常感谢。