この質問の前に、複雑な質問をして回答が付きませんでした!
以前Wクリックで転記 最高の回答をいただきました。それをもとに挑戦をしてみましたが、何せ素人できるわけもなく、重ねての質問になります。

Sh2 コード票  A2 B2 C2 D2  2~1000行入っています
コード表のA2列のセルをWクリックして Sh1 データの指定セルへ順次転記したいのですが

Sh2 (コード表)    A列     D列    E列 
             は      は    は
Sh1 (データ)     B列     F列    G列

高齢と素人、解説も教えてもらえたらありがたく思います、ぜひお願いいたします。

質問者からの補足コメント

  • ありがとうございます。早速やってみたのですがエラーは出ないのですが転記されません。
    素人には説明もうまくできていないと、感じています。
    申し訳ありませんが、単純にコード A列をWクリックしたセルがデータB列に順次コピー転記できるように、ご指導お願いいたします。A列~B列だけでお願いします

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/04/15 21:48
  • お手数おかけします。
    書き換えてみたのですが、反応はしてエラーも出ませんが、転記されていません。
    私のやっていることが悪いと思いますが、手順の説明を教えていただけるとありがたいのですが、混乱してると思います、すみません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/04/16 08:23
  • 説明がうまくできなくてごめんなさい。
    NO2でよいと思います、コード表A列セルをWクリックするとデータB列へ順次転記でよいのですが、
    NO2のコードがそうであれば、反応はしますが転記されないエラーも出ません。
    申し訳ないのですが、もう一度ご指導お願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/04/16 08:53

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No.1です。



どうも失礼しました。
前回のコードに間違いがありました。
「コード表」シートのA列をそのままA列の最終行以降に表示させていました。

訂正したコードをもう一度記載しておきます。
(B列で最終行を取得するようにしています)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRow As Long, wS As Worksheet
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Set wS = Worksheets("データ")
With Target
If .Row > 1 And .Value <> "" Then
Cancel = True
myRow = wS.Cells(Rows.Count, "B").End(xlUp).Row + 1 '//←B列で最終行の次の行を取得★//
wS.Cells(myRow, "B") = .Value '//←ココが間違っていた(前回はA列に転記していました)★//
wS.Cells(myRow, "F") = .Offset(, 3) '//「データ」シートの"myRow"行、F列にD列の値を代入//
wS.Cells(myRow, "G") = .Offset(, 4) '//「データ」シートの"myRow"行、G列にE列の値を代入//
End If
End With
End Sub

※ 「コード表」シートのA列を「データ」シートのB列に順次表示させるコードも記載しておきます。
今あるコードを消去し↓のコードにしてみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRow As Long, wS As Worksheet
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Set wS = Worksheets("データ")
With Target
If .Row > 1 And .Value <> "" Then
Cancel = True
myRow = wS.Cells(Rows.Count, "B").End(xlUp).Row + 1
wS.Cells(myRow, "B") = .Value
End If
End With
End Sub

これで「コード表」シートのA列をダブルクリックすると
「データ」シートのB列に順次表示されるはずです。m(_ _)m
この回答への補足あり
    • good
    • 0

続けてお邪魔します。



最初の補足にある
>単純にコード A列をWクリックしたセルがデータB列に順次コピー転記できるように・・・
とは同じシート上でのコトでしょうか?

前回の後半のコードは「コード表」シートのA列をダブルクリックすると
「データ」シートのB列にその「値」が表示されるコードでした。

同一シート上での操作の場合は↓のコードにしてみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
With Target
If .Value <> "" Then
Cancel = True
Cells(Rows.Count, "B").End(xlUp).Offset(1) = .Value
End If
End With
End Sub

※ 今まで投稿したコードは上記コードを応用しただけです。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

ごめんなさい。
データシートが1000行出来ていましたので、1001行目から新しくできていました。
削除してA2行から始めたら完璧でした。何度も何度も失礼なことお許しください。
ありがとうございました。

お礼日時:2017/04/16 09:08

こんばんは!



「コード表」シートのデータはA~D列にあるという説明文ですが、
「データ」シートに表示するのはA・D・E列になっていますね?
とりあえずその通りにしてみました。

「コード表」Sheetのシートモジュールにしてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myRow As Long, wS As Worksheet
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Set wS = Worksheets("データ")
With Target
If .Row > 1 And .Value <> "" Then
Cancel = True
myRow = wS.Cells(Rows.Count, "A").End(xlUp).Row + 1
wS.Cells(myRow, "A") = .Value
wS.Cells(myRow, "F") = .Offset(, 3) '//「データ」シートの"myRow"行、F列にD列の値を代入//
wS.Cells(myRow, "G") = .Offset(, 4) '//「データ」シートの"myRow"行、G列にE列の値を代入//
End If
End With
End Sub

こんな感じで良いのでしょうか?

※ 細かいコードの説明は控えさせていただきます。m(_ _)m
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QVB データテーブルA列とB列があった時、B列の1行目から1stepずつデータを入力していきたい

AddDataTableRowメソッドにて
1月として、A列は日付で先に31日分の行が作成されます。その際にB行はNothingで生成しました。
私は、A列はそのままでB列の1行目から1つずつ書き込んでいくコーディングが知りたいです。
現在はAddDataTableRowのためA列の最後の行の次の行が追加され入力されてしまいます。

Aベストアンサー

whereで列BがNothingだけにして、列AのMinの値を取得
列A指定して、狙い打ちでUpdate

Qエクセル たとえばA列の値が ○ と成った時 その行のB列のセルに斜め線を入れたいのです

  A    B
  ○   /(書式の罫線の斜線です)
  11       
  ○   /
  12

といった具合にするには どの様なコードを書けばよいのでしょうか
初心者で説明不足の段はお許しください
ご指南お願いいたします

Aベストアンサー

下記のコードを
Sheetのコードモジュールに書いてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Value = "○" Then
With Cells(Target.Row, 2).Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End If
End Sub

QエクセルVBAでダブルクリックをしたらA列のデータが別シートに転記されるにはどうしたらよいですか?

VBA初心者です。
シート1にあるデータ一覧のセルをダブルクリックしてそのデータをシート2に転記させたいです。
ダブルクリックしたらその一列がまるごと転記されるにはどのように書いたらいいですか?
また、一行だけでなく各行のデータをダブルクリックしたらその都度転記されるようにしたいです。

お手数ですがご回答のほどよろしくお願いします。

Aベストアンサー

こんばんは!

どののセルをダブルクリックしてもその行をSheet2の最終行の下にコピー&ペーストするようにしてみました。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
With Target
Cells(.Row, .Column).EntireRow.Copy Worksheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1)
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

Qエクセル A列の値によって、B列の入力規則を変更

エクセル2007を使用しております。

下図のように、【カテゴリー】A列が「野菜」の場合、【種類】B列で野菜の種類が表示され、プルダウンの中から選択、【カテゴリー】A列が「果物」の場合、【種類】B列で果物の種類が表示され、プルダウンの中から選択…

ということをしたいのですが、A列の値によって、B列のプルダウンに表示される内容を変えるには、どういった方法が一番よいか、教えていただけないでしょうか。

INDEX、MACH関数、リストボックスやコンボボックスなどのサイトを見たのですが、上手くできず、勉強不足で申し訳ありませんが、急を要するためお力を貸していただけましたら幸いです。

どうぞよろしくお願いいたします。

Aベストアンサー

例えばシート1のA列に野菜と入力してB列で売るダウンリストを表示させるためには次のようにします。
シート2にデータベースとしてA1セルに野菜と入力して下方に野菜の名前を並べます。その後にそれらの範囲を選択してから「数式」タブの「名前の定義」をクリックします。名前の窓には野菜と表示されていると思います。空白の場合には野菜と入力します。同様に果物についてもB1セルに果物と入力して下方に果物名を入力したのちに「名前の定義」を行います。
そこでシート1に戻ってB1セルから下方のセルを選択してから「データ」タブの「データの入力規則」で入力値の種類では「リスト」を選び元の値の窓には次の式を入力してOKします。

=INDIRECT(A1)

これでA列に野菜を入力することで野菜のリストがB列に表示されます。

QExcel VBAでグラフ作成。A,C列をx値, B,D列をy値にした複数プロット

ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
.ChartType = xlXYScatterLines
.SetSourceData Worksheets(1).Range("A1:F10"), _
PlotBy:=xlColumns
.HasLegend = False
End With

上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。

以下のようにするにはどうすればよろしいでしょうか。
第一のプロットはx値をA1:A10, y値をB1:B10としてグラフを作成します。次にこのグラフにx値をC1:C10, y値をD1:D10とした第二のプロットを追加、同様に第三はx値をE1:E10, y値をF1:F10としてプロットを追加したグラフを作成したいのですが、このようなグラフはVBAで作成可能でしょうか。

本番のグラフは行数と列数はいろいろな場合があるので、行数と列数のパラメータに任意の値を代入し、Forループで様々な形態に対応できるものを作りたいと考えています。

ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
.ChartType = xlXYScatterLines
.SetSourceData Worksheets(1).Range("A1:F10"), _
PlotBy:=xlColumns
.HasLegend = False
End With

上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。

以下のようにするにはどうすれ...続きを読む

Aベストアンサー

Dim chartObj As ChartObject
Dim r As Range
Dim i As Long

Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
Set r = Worksheets(1).Range("A1:F10")
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 1 To 5 Step 2
    With .SeriesCollection.NewSeries
      .XValues = r.Columns(i)
      .Values = r.Columns(i + 1)
    End With
  Next
End With

Set r = Nothing
Set chartObj = Nothing

...こんな感じ。
普通に手作業で作成するものをマクロ記録すればヒントになるでしょう。
後から系列を追加すればいいわけです。

>本番のグラフは行数と列数はいろいろな場合があるので...
...に対応させる一例としては以下。

Const MN = 1 'データ開始行
Const MX = 10 'データ個数
Dim chartObj As ChartObject
Dim x, y
Dim z As Long
Dim i As Long

x = VBA.Array(1, 3, 5) 'x値の列
y = VBA.Array(2, 4, 6) 'y値の列
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 0 To UBound(x)
    With .SeriesCollection.NewSeries
      .XValues = Cells(MN, x(i)).Resize(MX)
      .Values = Cells(MN, y(i)).Resize(MX)
    End With
  Next
End With

Set chartObj = Nothing

Dim chartObj As ChartObject
Dim r As Range
Dim i As Long

Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
Set r = Worksheets(1).Range("A1:F10")
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 1 To 5 Step 2
    With .SeriesCollection.NewSeries
      .XValues = r.Columns(i)
      .Values = r.Columns(i + 1)
    End With
  Next
End With

Set r = Nothing
Set chartObj = Nothing

.....続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報