• 締切済み

VBAでの入力

A1~D5に自動的に順番にデータを入力したいです。 A1→B1→C1→D1→A2→B2→C2→D2→A3・・・ といった感じです。 If range("A1").Value = "" Then  range("A1").Value=○ ElseIf range("A1").Value <> "" Then  range("B2").Value = ○○ ・・・ のようにたくさんIf文を書くしかないのでしょうか。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

> 別のシートからセルをセルをコピーして順番に入れていくのですが、 > 指定された数だけしか入力できないのです。 > 例) 5の場合、A2まで 以降ブランク >   12の場合、B3まで 以降ブランク ますます何がしたいのか解りません。 説明が出来ないのなら、せめて例をもっと具体的かつ詳細に提示してください。 元データが別シートのどこにどう有って、元シートのデータをどういう順番でどこに貼り付けたいと言う感じで……。

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

よく分からない文章とコードですね。 取り敢えず、そのセル順でセルが空欄ならば「○」を入力した例です。 Sub aaa() Dim r As Range For Each r In Range("a1:d5") If r = "" Then r = "○" Next End Sub

karubi_syogun
質問者

補足

すみません、説明足らずでした。 別のシートからセルをセルをコピーして順番に入れていくのですが、 指定された数だけしか入力できないのです。 例) 5の場合、A2まで 以降ブランク   12の場合、B3まで 以降ブランク

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

何がしたいのか今一良く解っていませんが、こんな感じですか? Sub Sample()   nCount = 1   For nRow = 1 To 5     For nCol = 1 To 4       Cells(nRow, nCol) = String(nCount, "○")       nCount = nCount + 1     Next nCol   Next nRow End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • LHS07
  • ベストアンサー率22% (510/2221)
回答No.1

ツール  オプション   編集    入力後にセルを移動する     右にする 4列A1からD10まで選択すると A1→B1→C1→D1→A2→B2→C2→D2→A3・・・ の順に入力できるはずです。  

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル VBAで

    変動する数値が、セル A1に入る状況で、 該当シートに Private Sub Worksheet_Change(ByVal Target As Range) If Range("A1").Value = 1 Then Range("C62").Value = "○" ElseIf Range("A1").Value = 2 Then Range("C62:C63").Value = "○" ElseIf Range("A1").Value = 3 Then Range("C62:C64").Value = "○" ElseIf Range("A1").Value = 4 Then Range("C62:C65").Value = "○" ElseIf Range("A1").Value = 5 Then Range("C62:C66").Value = "○" ElseIf Range("A1").Value = 6 Then Range("C62:C67").Value = "○" ElseIf Range("A1").Value = 7 Then Range("C62:C68").Value = "○" ElseIf Range("A1").Value = 8 Then Range("C62:C69").Value = "○" ElseIf Range("A1").Value = 9 Then Range("C62:C70").Value = "○" ElseIf Range("A1").Value = 10 Then Range("C62:C71").Value = "○" ElseIf Range("A1").Value = 11 Then Range("C62:C72").Value = "○" ElseIf Range("A1").Value = 12 Then Range("C62:C73").Value = "○" ElseIf Range("A1").Value = 13 Then Range("C62:C74").Value = "○" ElseIf Range("A1").Value = 14 Then Range("C62:C75").Value = "○" ElseIf Range("A1").Value = 15 Then Range("C62:C76").Value = "○" End If End Sub と言ったマクロを記述しましたが、 動作がどうにも重くて困っています。 一度、プレビューをした後は特に遅くなります。 何か良い解決方法はありますでしょうか?

  • VBA beforeprintについて

    Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "sheet1" Then If Range("M1").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("M1").Select Exit Sub End If ElseIf ActiveSheet.Name = "sheet2" Then If Range("A47").Value = 文字 Then Cancel = True    MsgBox ("日付を入力してください") Range("A47").Select Exit Sub End If Exit Sub End If End Sub 上記は印刷をする前に実行されるコードですが、上記を実行して印刷をした後に自動で下記のVBAを実行したいのですが Sub データー取り込み() ActiveSheet.Range("B2000:Z2000").Copy ChDir "\\データーA\データーB\データーC\データーD" Workbooks.Open Filename:="\\データーA\データーB\データーC\データーD\データーシート1.xls" Sheets("顧客データー").Select If Worksheets("顧客データー").Range("B18").Value = "" Then Worksheets("顧客データー").Range("B18").PasteSpecial Paste:=xlPasteValues Else Worksheets("顧客データー").Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If ActiveWorkbook.Save ActiveWindow.Close End Sub 上記のコードと下記のコードをどのように絡めたらいいのかわかりません。アドバイスお願いします。

  • エクセルvbaで同姓同名の抽出方法について

    エクセルVBAで質問があります。 ワークシート1(上段、example1)のB2のセルにひらがな(苗字)を入力したとき、ワークシート2(下段、example2)で作成して該当した情報をワークシート1のC2からe7へ反映させたいと考えています。 ワークシート2に、1000人越えの情報があり、かつ、同姓同名が何人かいて、フィルタをかけてもフィルタ結果後から目的の人を見つけるのが大変なんです。 入力したコードは、下記の通りなのですが、どこをどう直せばいいのか分かりません。どなたか教えていただけないでしょうか? Sub sample() Dim i As Byte   i = 1   If < Worksheets("example2!A2:A9").Value > = 5 Then         Worksheets(i + 4, "example2!C2:E2").Value = EntireRow("example2!D:F").EntireRow = True    ElseIf 4 < Worksheets(i + 3, "example2!A2:A9").Value > = 4 Then         Range.Worksheets("example1!C3:E3").Value = EntireRow("example2!D:F").EntireRow = True    ElseIf 3 < Worksheets(i + 2, "example2!A2:A9").Value > = 3 Then         Range.Worksheets("example1!C4:E4").Value = EntireRow("example2!D:F").EntireRow = True    ElseIf 2 < Worksheets(i + 1, "example2!A2:A9").Value > = 2 Then         Range.Worksheets("example1!C5:E5").Value = EntireRow("example2!D:F").EntireRow = True    ElseIf 1 < Worksheets(i + 0, "example2!A2:A9").Value > = 1 Then         Range.Worksheets("example1!C6:E6").Value = EntireRow("example2!D:F").EntireRow = True    ElseIf 0 < Worksheets(i + -1, "example2!A2:A9").Value > = 0 Then         Range.Worksheets("example1!C7:E7").Value = EntireRow("example2!D:F").EntireRow = True Else End If       Range("example1!B2").Value = " " End sub

  • worksheetchangeイベント

    Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng As Range Set myRng = Application.Intersect(Target, Range("A1:D2,A4:D6")) If myRng Is Nothing Then Exit Sub If WorksheetFunction.CountA(myRng) = 0 Then myRng.Value = "-" ElseIf Intersect(Target, Range("A1")).Value = "139.8" Then Range("B1:D1").Value = "-" End If End Sub A1:D2範囲とA4:D6範囲内で、アクティブセルでDELETEキーを押した場合、"-"がセルに挿入されるようにコードを書きました。 さらに、A1セルの値がドロップダウンリストで139.8に変更された場合、B1、C1、D1に"-"を入力するようにしました。 A1セルの値を変更した場合の処理がうまくいかず四苦八苦しています。 ElseIf Intersect(Target, Range("A1")).Value = "139.8" Then ここを、 Range("A1").value = "139.8" Then にしてしまうとA1の値が139.8の状態ではB1、C1、D1へ数値を入力しても"-"となってしまいます。 A1からD1まで連動したリストがリアルタイムで動作するようにコードを書きたいのですが・・・なんとか教えていただけませんでしょうか・・

  • 条件に従ってセルに入力の構文の簡素化

    よろしくお願いします。 ComboBox4の値を条件(20行づつ下)に従ってセルに入力するのですが 構文の簡素化はできないでしょうか With Worksheets("写真") If ComboBox5.Value = "1" Then .Range("R34").Value = ComboBox4.Value ElseIf ComboBox5.Value = "2" Then .Range("R54").Value = ComboBox4.Value ElseIf ComboBox5.Value = "3" Then .Range("R74").Value = ComboBox4.Value ElseIf ComboBox5.Value = "4" Then .Range("R94").Value = ComboBox4.Value ~ ElseIf ComboBox5.Value = "48 Then .Range("R994").Value = ComboBox4.Value ElseIf ComboBox5.Value = "49" Then .Range("R1014").Value = ComboBox4.Value ElseIf ComboBox5.Value = "50" Then .Range("R1034").Value = ComboBox4.Value End If

  • エクセルのVBA、ループ処理について

    if文とループ処理をどう組み合わせればいいのかわかりません 以下のコードで、iの数をを増やしていく処理を行いたいのですが、エラーがでてしまいうまくいきません どのように書けばいいのでしょうか 教えてください For i = 2 To 11 If Cells("4,i") > 80 Then Cells("5,i").Value = "A" ElseIf Cells("4,i") > 70 Then Cells("5,i").Value = "B" ElseIf Cells("4,i") > 60 Then Cells("5,i").Value = "C" Else Cells("4,i").Value = "D" End If Next

  • エクセルVBAについて教えてください。

    DSUMを使ってVBAで自動計算をさせたいのですがうまくいきません。  ・Sheetsデータにデータを置いていて、A1からU1610までデータが入ってます。  ・Sheets集計用は計算させるための(条件を入れる)シートで、A1からE列まで(選択する項目によって何行目になるかわかりません。)  ・mycountでE列のデータが入ってる行を出してます。  ・部屋タイプで1K~1LDKを選ぶとDSUMの式のタイプに1を入れたいのです。(1K~1LDKの場合はCells(1,3) 下記のように書いてみましたが上手くいきません。 どなたかご教授いただけると助かります。 mycount = "=COUNT(集計用!E2:E300)" Sheets("集計用").Cells(5, 7).Value = Range("g10") = " =DSUM(cells(データ!,1),1610,21),cells(データ!1,タイプ),cells(集計用!),cells(mycount,5))" '部屋タイプの選択 If Sheets("フォーム").Range("c30") = "1K~1LDK" then  タイプ = 3 ElseIf Sheets("フォーム").Range("c30") = "2K~2LDK" Then タイプ = 6 ElseIf Sheets("フォーム").Range("c30") = "3K~3LDK" Then  タイプ = 9 ElseIf Sheets("フォーム").Range("c30") = "4K~4LDK" Then タイプ = 12 Else Sheets("フォーム").Range("c30") = "その他" Then タイプ = 15 End If

  • 連続データのVBAの質問

    お世話になります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, k As Long, myNum As Long If Range("C1") <= Date - Day(Date) Then Exit Sub If Not Intersect(Target, Range("C1,B9:B39")) Is Nothing And Target.Count = 1 Then Application.EnableEvents = False With Target If .Column = 3 Then myNum = WorksheetFunction.Max(Range("B9:B39")) If IsDate(.Value) Then For i = 9 To 39 If Cells(i, "A").Value = "" Then Cells(i, "B").Value = "" Else Cells(i, "B") = myNum + i - 8 End If Next i End If Else i = .Row If .Value = "" Then Range(Cells(i + 1, "B"), Cells(39, "B")).ClearContents Else For k = i + 1 To 39 If Cells(k, "A").Value = "" Then Cells(k, "B").Value = "" Else Cells(k, "B") = Cells(k - 1, "B") + 1 End If Next k End If End If End With Application.EnableEvents = True ElseIf Not Intersect(Target, Range("R8:R38")) Is Nothing Then Application.EnableEvents = False Range(Cells(Target.Row, 18), Cells(39, 18)).Value = Target.Value Application.EnableEvents = True End If End Sub これはセルC1に年月を表記させ、そのC1セルの年月を変更した場合B9~B39のセルが自動で連続データの数字を記入し、B9~B39のどこかのセルを空白にすると、そのセル以降も空白になります。 そこで質問ですが、例えばB14の数字を消すとB15~39まで空白のセルになります。そして、B20に1と入力するとB21~39に連続データの数字が自動記入されます。 そしてC1の年月を次の月に更新した際は、B39で示された数字以降の連続データをB9に表示させるには、どうすれば良いでしょうか?

  • VBAの繰り返し処理について・・・

    VBAの繰り返し処理について・・・ 現在、以下のようなVBAを右も左もわからないまま、見よう見まねで記述してみました。 一応しっかりと動いています。きっと間違いだらけの記述かとは思いますが・・・ rowcnt = 2 Do B値 = ActiveSheet.Range("B" & rowcnt) C値 = ActiveSheet.Range("C" & rowcnt) D値 = ActiveSheet.Range("D" & rowcnt) If B値 = C値 And C値 = D値 Then ActiveSheet.Range("B" & rowcnt).Copy ActiveSheet.Range("A" & rowcnt) Else If B値 = C値 Then ActiveSheet.Range("D" & rowcnt).Copy ActiveSheet.Range("A" & rowcnt) ElseIf C値 = D値 Then ActiveSheet.Range("C" & rowcnt).Copy ActiveSheet.Range("A" & rowcnt) End If End If rowcnt = rowcnt + 1 Loop Until rowcnt > 3176 現在sheet1~sheet8(それぞれシート名が入っています)まであり、上記の命令をsheet2~sheet8までのシート全てに適用したいと考えています。 Arrayを使う方法などいろいろ調べているのですが、うまくいきません。 正しい命令方法をお教えいただけたらありがたく思います。

  • エクセルVBA

    A列を基準にBC列が空白ならAの数値を入れて、A>BならB列を更新、A<CならC列を更新 A列が数値以外ならその行をスキップ、という処理をしたいのですが Option Explicit Dim A As Range, B As Range, C As Range Dim i As Long Sub test() For i = 1 To 10 Set A = Cells(i, 1) Set B = A.Offset(0, 1) Set C = A.Offset(0, 2) If IsNumeric(A) Then Else Exit Sub End If If B.Value = "" Then B.Value = A.Value If C.Value = "" Then C.Value = A.Value If A.Value > B.Value Then B.Value = A.Value If A.Value < C.Value Then C.Value = A.Value Next i End Sub とすると数値以外の行の時点で停止してしまいます。 その行を飛ばして次の行に進むにはどうしたらいいのでしょうか?