2016-06-20 2 views
0

私はvbaを初めて使用しています。私はuserformを作成し、「OK」ボタンに関連付けられたコードを操作しています。私は、ユーザーフォームの空のフィールドをチェックし、別のワークシートに移動し、上部のセル(B3)を選択し、空のセル(B4)のデータを塗りつぶして、列Oまで行に沿って移動したいと思います。誰かがユーザーフォームを入力して「OK」をクリックするたびに同じ操作を行います。Activecell.end.offset issue vba

しかし、ライン

ワークシート( "Data_raw")を強調表示し、エラー・メッセージがあります。 範囲を選択します( "B3")。

選択します。私は別のファイルを使用しようと、このファイル:(上のエラーとして表示される理由を私は知らない取り組んでいる。

は、誰もが

?。してください、私は私のコードが間違っているかを把握助けることができますここに私のコードは次のとおりです。

Private Sub CmdOKAY_Click() 


    'check all the fields to see if they are empty 


    If BoxRM = "" Then 
       MsgBox "Select a Relationship Manager" 

      End If 

    If TextCompany_name = "" Then 
       MsgBox " Enter a company name" 

      End If 


    If BoxCountry = "" Then 
       MsgBox "Select a country" 

      End If 

    If BoxTransactions = "" Then 
       MsgBox "Enter a volume for the transactions" 

      End If 

    If Btn_Yearly_Transactions.Value = False And Btn_Monthly_Transactions.Value = False Then 
       MsgBox "Select a frequency for the volume of transactions inputted" 

      End If 

    If BoxPosition_Vol = "" Then 
       MsgBox "Enter a volume for the positions" 

      End If 

    If Btn_Yearly_Positions.Value = False And Btn_Monthly_Positions.Value = False Then 
       MsgBox "Select a frequency for the volume of positions inputted" 

      End If 

    If CheckBox_RP.Value = False And CheckBox_TP.Value = False And CheckBox_TE.Value = False Then 
       MsgBox " Select at least one type of account" 

      End If 

    Worksheets("Data_raw").Range("b3").Select 

    ActiveCell.End(xlDown).Offset(1, 0).Select 
    ActiveCell.Value = RM 


    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = NameCo 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = Pays 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = RepTrd 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = FreqYrTrd 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = OP 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = FreqYrOP 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = AvrgDays 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = AcRP 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = AcTP 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = AcTE 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = RP_Per 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = TP_Per 

    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = TE_Per 


    'copy the formats from the row above 
    Range("b4:o4").Copy 
    ActiveCell.Offset(0, -12).PasteSpecial xlPasteFormats 
     Application.CutCopyMode = False 

    Unload Me 
End sub 
+0

シートを有効にしてから範囲を選択する必要があります。あなたがここにすべてを選択する必要はありません... – Rory

答えて

0

ちょうどその行の前に1行を追加します。

Worksheets("Data_raw").Activate 
Worksheets("Data_raw").Range("b3").Select 
+0

ありがとう、一度私は次の行を行ったActiveCell.End(xlDown).Offset(1、0).Selectがハイライトされています – Izuma23

0

あなたがオブジェクトを直接操作して、Cをリファクタリングすることにより、コードが短くて読みやすいし、デバッグすることができます下にあるようなオード。

私が指摘しておかなければならないもう一つのことは、いずれかのチェックが失敗した場合にコードにデータを貼り付けるつもりがない場合は、ブロックをブロック内に追加する必要があるということです。それ以外の場合は、ボタンをクリックするたびに使用可能なものをそのまま貼り付けます。

+1

入力ありがとう!!!!!それはちょうどうまく動作します!ありがとうScott :) – Izuma23