如何使用循环粘贴我选择的"文本"进入细胞?

时间:2016-06-22 12:31:24

标签: excel-vba loops vba excel

我试图输入文字,例如"代码"在我的历史标签中的两个单元格中使用Counta公式进入一列。

mystartmystop都在单元格中有Counta公式,我想粘贴单词" code"例如,在两个值之间的所有单元格中,但我不知道如何完成我的代码。

文字"代码"会把我的代码改成其他东西

Sub MON_ImportHistory()

Sheets("Historic").Range("B2:AZ3000").ClearContents

'
If Worksheets("Help").Cells(18, 9) = "Data already present" Then
   MsgBox ("Import aborted: Data for selected date already present")

Else

Dim myRange As Range
Dim NumRows As Integer
Dim myCopyrange As Range
Dim mystart As Range
Dim mystop As Range



m_import = Worksheets("Help").Cells(17, 9)
m_criteria = "=" & m_import



Workbooks.Open Filename:= _
    "file on my data base"
Sheets("Historic").Select
If Application.WorksheetFunction.CountIf(Range("A:A"), m_import) > 0 Then
   m_Filterrange = "$A$1:$AV$" & Trim(Str(Worksheets("Historic").Cells(1, 18) - 1))
   ActiveSheet.Range(m_Filterrange).AutoFilter Field:=1, Criteria1:= _
   m_criteria, Operator:=xlAnd

   m_extractrange = "$A$90000:$AV$" & Trim(Str(Worksheets("Historic").Cells(1, 18) - 1))
   Range(m_extractrange).Select
   Selection.Copy
   Windows("My File name").Activate
   Sheets("Historic").Select
   mystart = Worksheets("Historic").Cells(1, 19)
   mystop = Worksheets("Historic").Cells(1, 20)

   For x = mystart To mystop

   myDestination = "B" & Trim(Str(Worksheets("Historic").Cells(1, 19)))
   Range(myDestination).Select
   ActiveSheet.Paste
   Windows("My file name").Activate

1 个答案:

答案 0 :(得分:0)

这里有很多内容......首先,看起来你在工作表中使用CountA公式来做你应该在VBA中做的事情。为完成这项工作,还有很多工作要做。您可能在第二行收到错误,因为您正在尝试清除尚未打开的工作表的内容。要查找列中占用的行数,可以使用LastRow = Sheets("Historic").Cells(Rows.Count,1).End(xlUp).Row。您应该尽量减少或取消SelectActivate的使用。如果你试图清理它,你和我可能会更有意义。不要忘记用Next x结束循环。

Sub MON_ImportHistory()

Dim LastRow, LastCol As Integer
Dim ws1, ws2 As Worksheet
Dim m_import As String
Dim x As Integer

Set ws1 = Worksheets("Help")

'
If ws1.Cells(18, 9) = "Data already present" Then
   MsgBox ("Import aborted: Data for selected date already present")
   Exit Sub

Else


Workbooks.Open "C:\Somefile.xlsx" 'Here is where you put your filename

Set ws2 = Workbooks("Somefile.xlsx").Worksheets("Historic")

LastRow = ws2.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = ws2.Cells(1, Columns.Count).End(xlToLeft).Column

ws2.Range(ws2.Cells(2, 2), ws2.Cells(LastRow, LastCol)).ClearContents

m_import = ws1.Cells(17, 9)

For x = 2 To LastRow

        ws2.Cells(x, 2) = m_import

Next x

End If


End Sub