2014-03-28 74 views
0

我正在爲Excel編寫一個宏,它允許用戶單擊一個按鈕來複制列A中的信息,然後在IBM Personal Communications模擬器中輸入信息,然後填寫該行的數據,他們再次按下按鈕,它回到列A並下到下一行。VBA確定哪個單元格在Excel中處於活動狀態

這是我到目前爲止有:

Option Explicit 
Sub NextClaim_Click() 
    Dim IDNum As String, Row 
    Dim Emulator As Object 

    ' Setting up the IBM Personal Communications emulator 
    Set Emulator = CreateObject("pcomm.auteclsession") 
    Emulator.SetConnectionByName ("A") 

    ' Initial row that user starts macro on 
    Row = ActiveCell.Row 

    ' Get info from first row in column A (ex. A2) 
    IDNum = Range("A" & Row).Value 
    ' Pull up info in IBM Personal Communications emulator 
    Emulator.auteclps.SendKeys "ret,i" & IDNum & ",m", 2, 2 
    Emulator.auteclps.SendKeys "[enter]" 

    ' If the last active cell that the user entered data in 
    ' is not the the current row in column A (ex. A2), then 
    ' add 1 to Row and go to the next row in column A (ex. A3) 
    If ActiveCell.Range("A" & Row) = False Then 
    Row = Row + 1 
    Range("A" & Row).Activate 
    End If 

End Sub 

我不希望是去到下一行,如果活動單元格在A列中的任何其他行的宏,它可以當按下按鈕時,轉到列A中的下一行。

回答

1

如何:

Sub Lou() 
    If ActiveCell.Column <> 1 Then 
     ActiveCell.Offset(1, 0).Select 
    End If 
End Sub 

編輯#1

如果你想去列A以及去道一排,然後:

Sub Lou() 
    If ActiveCell.Column <> 1 Then 
     ActiveCell.Offset(1, 0).EntireRow.Cells(1).Select 
    End If 
End Sub 
+0

不確定。正如我讀到的那樣,它好像在說「如果列中的活動單元格不是1(例如列A),然後向下移動一個單元格並將其選中」。但我需要它回到A列。 – Lou

+0

我試着用我現有的IF編碼,它的工作原理。謝謝!! – Lou

+0

看到我的**編輯#1 **如果你想移動到列** A **以及下拉 –

0

要確定哪個單元格處於活動狀態,您可以撥打

ActiveCell.Row 

Activecell.Column 

ActiveCell.worksheet 

將返回整數的方法,可以通過程序定位活動單元。

+0

是的,但你錯過了另一個重要部分。我已經在代碼中確定了活動單元格:'Row = ActiveCell.Row'和'Range(「A」&Row)'。在確定它是否不在A欄後,我正在尋找的是如何到達那裏。我從Gary的學生那裏得到了這個答案:「如果ActiveCell.Column <> 1 Then'。在他的解決方案下面的最後一條評論中,我嘗試了它,並混合了我已有的代碼,並且它可以工作。謝謝。 :) – Lou

相關問題