
すみません教えて下さい
以下の条件で動くマクロを作っているのですがうまくいきません
(1)sheet1、c7以下にデーターが入っています最終データー行はその時によって違います
(2)sheet1,c列にデーターがあれば、必ずf列までデータがあります
上記条件のもと
例:sheet1 c7にデータがある場合 c7~F7までのデータを sheet2のC7に半角で結合する
上記動作をC列のセルが空白になるまで繰り返す
マクロを作成しましたがうまくいきません
sheet2のセルへ値を結合するところでエラーが出ます
どこが悪いのかご教授、ご指導をお願いします
Sub loop1()
'
' 繰り返しMacro Macro
'
'
Dim i As Integer
i = 1
Sheets("Sheet1").Select
Range("c7").Select
Do While ActiveCell.Value <> ""
Worksheets("Sheet2").Select
Range("c7").Select
Range("c7").Value = Asc.Sheet1!C7.Value & Sheet1!D7.Value & Sheet1!E7.Value & Sheet1!F7.Value
i = i + 1
activesell.Offset(0.1).Select
Loop
End Sub
No.5ベストアンサー
- 回答日時:
既に、すばらしい回答が出ていますが、質問者の勉強という事で捕捉します。
Sheet1!C7.Value & Sheet1!D7.Value & Sheet1!E7.Value & Sheet1!F7.Value
関数の記述の仕方です。VBAのコードではありませんよ。
activesell.Offset(0.1).Select
スペルミス、点とカンマ、行と列の指定の間違い
Activeなセルを一行ずつ下へずらすには
ActiveCell.Offset(1, 0).Activate
と記述します。
Do while を使ったLoopですが、出来るだけ今のコードを生かすとして
Sub loop1()
Dim i As Integer
i = 7
Sheets("Sheet1").Range("c7").Select
Do While ActiveCell.Value <> ""
Worksheets("Sheet2").Range("c" & i).Value = Range("c" & i).Value
i = i + 1
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
となります、セルの結合と半角への変換は無視しています。
まずは、これだけで、何を行っているかいるか理解してみてください。
No.4
- 回答日時:
こんにちは。
ご質問のコードを見る限りは、まだ掲示板で質問する段階にはないように思います。
まず、VBEditor に書いてみて、赤い字が出た所を修正するようにしなければなりませんね。また、デバッグ--コンパイルをしたら、エラーが出ていないとか確認してください。
できるだけ、基本的な所を積み上げたほうがよいです。今の段階では、回答を貰っても、解説のないコードだけでは、全部は把握できないかもしれません。
'//
Sub CombineData()
Dim ws2 As Worksheet
Dim LastRow As Long '最後の行
Dim i As Long
Dim v As Variant
Set ws2 = Worksheets("Sheet2")
With Worksheets("Sheet1")
LastRow = .Cells(Rows.Count, "C").End(xlUp).Row
For i = 7 To LastRow '7行目から
If .Cells(i, "C").Value <> "" Then
v = .Cells(i, "C").Value _
& .Cells(i, "D").Value _
& .Cells(i, "E").Value _
& .Cells(i, "F").Value
ws2.Cells(i, "C").Value = StrConv(v, vbNarrow) '半角
End If
Next i
End With
Set ws2 = Nothing
End Sub
No.3
- 回答日時:
最後で間違った、、、ENDの直前、、、
(正)
zSheet.Columns("C").AutoFit
(誤)
省略
No.2
- 回答日時:
C列途中に空白がある場合、その行はスキップしている。
Sheet1とSheet2の行位置は対応させているので、Sheet2の方を詰める場合は、nn = i、をコメントにする最初にC列をクリアしている。問題があれば、zSheet.Columns("C").Clear、をコメントにする
Option Explicit
'Sub loop1()
Sub TheNextNew()
Const xNum = 7
Dim i As Long
Dim nn As Long
Dim xLast As Long
Dim xSheet As Worksheet
Dim zSheet As Worksheet
'i = 1
'Sheets("Sheet1").Select
Set xSheet = ThisWorkbook.Sheets("Sheet1")
Set zSheet = ThisWorkbook.Sheets("Sheet2")
zSheet.Columns("C").Clear
xLast = xSheet.Cells(Rows.Count, "C").End(xlUp).Row
'xSheet.Range(Cells(7, "C"), Cells(xLast, "C")).Select
'Do While ActiveCell.Value <> ""
nn = xNum
For i = xNum To xLast
'Worksheets("Sheet2").Select
'Range("c7").Select
'Range("c7").Value = Asc.Sheet1!C7.Value & Sheet1!D7.Value & Sheet1!E7.Value & Sheet1!F7.Value
If (xSheet.Cells(i, "C").Value <> Empty) Then
nn = i
zSheet.Cells(nn, "C").Value = StrConv(xSheet.Range("C" & i).Value & xSheet.Range("D" & i).Value & xSheet.Range("E" & i).Value & xSheet.Range("F" & i).Value, vbNarrow)
nn = nn + 1
End If
'i = i + 1
'ActiveCell.Offset(0.1).Select
'Loop
Next
zSheet.Select
zSheet.Rows(xNum).AutoFit
End Sub
No.1
- 回答日時:
>どこが悪い
シート名、セル番地のマクロの書き方が全然デタラメです。
作成例:
sub macro1()
dim r as long
dim c as long
for r = 7 to worksheets("Sheet1").range("C6556").end(xlup).row
worksheets("Sheet2").cells(r, "C").clearcontents
if worksheets("Sheet1").cells(r, "C") <> "" then
for c = 3 to 6
worksheets("Sheet2").cells(r, "C") = worksheets("Sheet2").cells(r, "C") & worksheets("Sheet1").cells(r, c)
next c
end if
next r
end sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで全シートから検索し列で...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
Excelで隣のセルと同じ内容に列...
-
EXCELで 一桁の数値を二桁に
-
エクセルでオートフィルタのボ...
-
PowerPointで表の1つの列だけ...
-
Excelで半角の文字を含むセルを...
-
エクセル 文字数 多い順 並...
-
エクセルのオートフィルタで最...
-
「B列が日曜の場合」C列に/...
-
【スプレッドシート】指定の日...
-
ある一定時間を超えた場合の超...
-
エクセルで文字が混じった数字...
-
エクセルで最初のスペースまで...
-
お店に入るために行列に並んで...
-
エクセルで、2種類のデータを...
-
エクセルで時刻(8:00~20:00)...
-
桁の違う数値での並び替え
-
Excelの表以外が暗い?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景色の有無を判断をして別の...
-
任意のセルに小計、合計と入力...
-
結合のループ処理のマクロ
-
エクセルのユーザー定義で
-
Excelで全シートから検索し列で...
-
Excelで作成したフォームからデ...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
Excelで隣のセルと同じ内容に列...
-
PowerPointで表の1つの列だけ...
-
エクセルでオートフィルタのボ...
-
EXCELで 一桁の数値を二桁に
-
エクセルで、2種類のデータを...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルで最初のスペースまで...
-
エクセルのオートフィルタで最...
-
2つのエクセルのデータを同じよ...
-
Excel強制終了
-
エクセルで文字が混じった数字...
-
Excelで中央揃えが出来ない?
おすすめ情報