2014-02-06 34 views
0

我有一个宏在大表中进行更改。 目前我显示一个msgbox()我做的每一个变化,这是相当侵略。 相反,我想将所有这些更改写入日志文件。如何写入其他工作表中的当前单元格

但我不想记住我在日志文件的哪一行,如果我可以避免它。

所以我需要一种方法来写入日志文件中的CurrentCell,而不激活它,然后将CurrentCell移动一行。

有没有简单的方法来做到这一点?

thanx,Gijs。

+0

是的,是有办法做到这一点。请编辑您的问题以包含您的代码的相关部分。此外,[看到此](http://stackoverflow.com/help/on-topic) – ARich

+1

你可能想看看[这个](http://stackoverflow.com/questions/71180/how-can- i-find-last-row-that-c​​ontains-data-in-the-excel-sheet-with-a-macro)。 –

回答

-1

要在工作表中获取当前单元格,我相信您需要激活它,但是可以关闭屏幕更新,以便用户实际上没有察觉到焦点的变化。

下面的代码执行此操作,获取工作簿工作表2上活动单元格的地址,将其输出到调试菜单,然后将光标移动到下一行,然后交换回当前工作表并转动屏幕更新:

我希望这有助于 安德鲁

Sub MoveToNextCell() 

    'Turn off screen updates 
    Application.ScreenUpdating = False 

    'Get the active cell in worksheet 2 
    ThisWorkbook.Sheets(2).Activate 

    'Execute the movement 
    Debug.Print "Pre-movement address: " & Application.ActiveCell.Address 
    ThisWorkbook.ActiveSheet.Cells(Application.ActiveCell.Row + 1, Application.ActiveCell.Column).Select 
    Debug.Print "Post-movement address: " & Application.ActiveCell.Address 

    'revert back to the original worksheet 
    ThisWorkbook.Sheets(1).Activate 

    'Turn screenupdates back on 
    Application.ScreenUpdating = True 

End Sub 
+0

OP特别要求一种不需要激活单元的解决方案。使用Activate方法简单地使用ActiveCell或Selection对象几乎不是一个好主意。 –

+0

是的,但是OP也说:“但是我不想记住我在日志文件中的哪一行,如果我能避免的话。”这是我通常会这样做的方式,以避免使用激活单元方法 - 即只使用一个整数变量来包含行计数,每次输入后递增。 不是我个人会这样做的方式,但最接近我可以达到规定的要求。 –

相关问题