2017-09-08 8 views
0

私はGoogleのスクリプトでのGoogleスプレッドシートを使用していると私は、スクリプトエディタでコードを実行しなくても、番号を入力するユーザー時に行を挿入します。したがって、選択したセルの値を変更すると、コードは自動的に実行されますが、これは起こっていません。すでにそれらのセルに書かれているデータを上書きしてこれは、自動部品なしで働く代わりの行を挿入されGoogleのスクリプトまたはVBA - 入力値を入力する時に挿入行(エクセル)

function PopulateColumn() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 
for (i = 1; i<=SpreadsheetApp.getActiveSheet().getRange(9,2).getValue(); i++) { 
sheet.insertRowsAfter(11, SpreadsheetApp.getActiveSheet().getRange(9,2).getValue()) 
SpreadsheetApp.getActiveSheet().getRange(i+10,1).setValue('Arrangement ' + i + ':') 
} 
} 

:これは、これまでの私のコードです。私は私がしようとしている

もう一つの方法は、コンピュータ上ではなく、同様の問題を使用してExcelでVBAエディタを使用することです...そのデータを維持したいです。目的のセルに「アレンジメント」よりも何か書き込まれている場合、それは実行されません。既に「手配」がある場合、それは数え続けます。それは私が欲しいものではありません...私は「3」を選択し、「5」なら、それは唯一の1から5まで手配していない1〜8を表示する必要があり、それが書かれているデータを失うことなく、行を挿入する必要があります前。トムのコード@

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim i As Long 
Dim StartingRow As Long 
Dim StartingArrangement As Long 

If Not Intersect(Target, Me.Cells(1, 2)) Is Nothing Then 
    With Me 
     StartingRow = .Cells(.Rows.Count, 1).End(xlUp).Row 

     If StartingRow < 3 Then 
      StartingRow = 2 
     Else 
      StartingArrangement = CLng(Trim(Replace(Replace(.Cells(StartingRow, 1), "Arrangement ", vbNullString), ":", vbNullString))) 
     End If 

     For i = 1 To .Cells(1, 2).Value2 
      .Cells(StartingRow, 1).Offset(i, 0).Value2 = "Arrangement " & StartingArrangement + i & ":" 
     Next i 
    End With 
End If 
End Sub 

誰かが私を助けてくださいことはできますか?これらの言語の両方について何も知らないでください!

+0

これはGoogleスクリプトで行うことができます。 Excelの必要はありません – Tom

+0

Javascriptで?セルからどのように値を取得できますか? – eduroc92

+0

は、私はGoogleのシートで働いていないので、それが可能だ場合は見当がつかないが、私はそれのため@Tom単語を取る決してきました。 VBAでは、単にエクセルrange.formula ..すなわち 'Thisworkbook.Worksheets( "シート1")を使用範囲( "A1")式= "= SUM(A2:A5)"。。' – Zac

答えて

2

両細胞B1で入力を取り、列Aを移入。

Googleスクリプトの方法: ツール - >スクリプトエディタ N.Bを選択します。

function PopulateColumn() { 
    for (i = 1; i<=SpreadsheetApp.getActiveSheet().getRange(1,2).getValue(); i++) { 
    SpreadsheetApp.getActiveSheet().getRange(i,1).setValue('Arrangement ' + i + ':') 
    } 
} 

それに興味があるように思われないように私がコメントした後、VBA方法GSスクリプトを更新していない:「Microsoft ExcelのObjectsの下にVBAエディタで左側を、あなたは見つけるでしょうシートオブジェクト。これを埋め込みたいシートに貼り付けてください。

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim i As Long 
    Dim StartingRow As Long 
    Dim StartingArrangement As Long 

    If Not Intersect(Target, Me.Cells(1, 2)) Is Nothing Then 
     With Me 
      StartingRow = .Cells(.Rows.Count, 1).End(xlUp).Row 

      If StartingRow < 3 Then 
       StartingRow = 2 
      Else 
       StartingArrangement = CLng(Trim(Replace(Replace(.Cells(StartingRow, 1), "Arrangement ", vbNullString), ":", vbNullString))) 
      End If 

      For i = 1 To .Cells(1, 2).Value2 
       .Cells(StartingRow, 1).Offset(i, 0).Value2 = "Arrangement " & StartingArrangement + i & ":" 
      Next i 
     End With 
    End If 
End Sub 
+0

VBA:あなたの助けのためにありがとうございましたが、私はセルに書き込むときにデータを上書きしたくありません。行を挿入するにはどうしたらいいですか?また、エディタで毎回「実行」をクリックするのではなく、番号を選択すると即座にコードを実行できますか? GS:未定義(行2)から「範囲」を読み取ることができないと言います – eduroc92

+0

イベントを削除するために更新しました。 GSはあなたがイベントをデバッグしようとするとそのことを言うでしょう – Tom

+0

JS:ありがとうございますが、セルのデータを上書きします。それらのセルに書き込まれたデータを上書きするのではなく、どのように行を挿入できますか? – eduroc92

関連する問題