2016-06-21 103 views
1

因此,我是Excel/VBA的新手,并且建议您尝试并执行拉伸任务并自动化一个过程。 我需要抓住工作表1上的每个工单ID(一次一个)并检查它是否在第二张工作表中。然后对sheet1比较sheet1的过程相同。工单ID位于工作表的第2列。如果我在其他工作表中找不到票证ID,则需要将票证ID的整行添加到第三张工作表。自动调整非特定单元格列Excel VBA

Dim i As Integer, TicketId As Range, CellId As Range 
Dim SearchRange1 As Range, SearchRange2 As Range 
Dim rowCount1 As Integer, rowCount2 As Integer, x As Integer 
x = 1 

'Get row counts from both sheets and set search ranges## 
Sheets("Sheet1").Select 
rowCount1 = Range("A2", Range("A2").End(xlDown)).Count 
Set SearchRange1 = Range("B2", Range("B2").End(xlDown)) 

Sheets("Sheet2").Select 
rowCount2 = Range("A2", Range("A2").End(xlDown)).Count 
Set SearchRange2 = Range("B2", Range("B2").End(xlDown)) 

'loop to compare differences in sheet1 to sheet2 and add to third sheet## 
For i = 2 To rowCount1 
    Sheets("Sheet1").Select 
    Set TicketId = Cells(i, 2) 
    Set CellId = SearchRange2.Find(What:=TicketId) 
    If CellId Is Nothing Then 
     Rows(i).Select 
     Selection.Copy 
     Sheets("Sheet3").Select 
     Cells(x, 1).Select 
     Cells(x, 1).PasteSpecial 
     Rows(x).Select 
     Selection.Columns.AutoFit 
        'Cells(x, 1).Value = TicketId.Value## 
     x = x + 1 
    End If 
Next i 
'Sheets("Sheet2").Select## 

Application.CutCopyMode = False 

我的问题是,当我得到的数据到第三片,我不能让列正确地安装,我无法看到所有数据。我研究并找到了AutoFit命令,但我不知道如何在我的代码中实现它。我已经看到了AutoFit的其他实现,但编码器总是知道他正在使用的范围。我不知道我将数据放在哪一行。我已经包含了我尝试过的许多实现之一:选择行,并自动安装我的选择。建议? 作为一个方面说明,我的粘贴方法也是唯一适用于我的方法,我尝试使用pastespecial:= xlPasteValues和:= xlPasteFormats,但它也不起作用。

+0

'行(x).Select | Selection.Columns.AutoFit'您选择行然后尝试自动调整列....这是它?编辑:另外,蝙蝠侠会链接你避免使用'select'。 – findwindow

+0

我需要自动调整整个行的列。那只是我尝试过的很多事情之一。从这一点我不知道该走到哪里。我是这个语言的新手,2天前我开始了这个项目,对vba一无所知。我很抱歉,如果代码是草率和效率低下。 – rdan1

+0

哈哈当然蝙蝠侠是出于打击犯罪。这对于2天有用^ _^ – findwindow

回答

1

如果您不确定该范围,请考虑在整个工作表上使用AutoFit。

ThisWorkbook.Worksheets("Sheet3").columns.autofit 
+0

谢谢,我只是调整它,它似乎工作。 – rdan1

+0

一直在寻找这一个班轮。 – GibralterTop