0

自転車の在庫と販売を追跡するためのワークブックがあります。現在の在庫、1 月の売上、2 月の売上、3 月の売上、...、12 月の売上、2013 年の総売上のワークシートがあります。

現在の在庫には、A2 に自転車の製造元、B2 に自転車のモデル、C2 に自転車の種類、D2 に価格、E2 にシリアル番号、F2 に販売日、G2 に販売日があります。G 列には、フォーム コントロールのチェック ボックスがあります。

チェックボックスをクリックすると、バイクとそのすべての情報がコピーされ、適切なワークシートに貼り付けられます (たとえば、2013 年 8 月 13 日に販売された場合、August Sales ワークシートと 2013 Total にソートされます)。 Sales ワークシート) および 2013 Total Sales ワークシート。さらに、チェックされている行の色を黒から緑に変更したいと考えています。よろしくお願いします。

4

2 に答える 2

0

チェックボックスが 2 つの異なる行にまたがっていないことを確認してください。確認したら、次のようにします。

  1. すべてのチェックボックスに同じマクロを割り当てます。
  2. マクロでは、次のコードを追加します。

    Dim shp As Shape
    Dim rng As Range
    Dim currentRowNumber As Long
    
    Set shp = ActiveSheet.Shapes(Application.Caller)
    Set rng = shp.BottomRightCell
    currentRowNumber = rng.Row
    
    MsgBox "Currently, you are working on Row no " & currentRowNumber
    

行番号を取得したら、値を簡単に見つけて、それに応じてコードを書くことができます。

お役に立てれば!

ありがとう、V

于 2013-08-02T20:08:28.027 に答える
0

最初に、チェックボックスの代わりに通常のセルを使用することを検討してください (より簡単で優れています)。次に、以下のコードを試してください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim checkedMark As String
Dim currentRow As Integer, lastRow As Integer
checkedMark = "X"

If Target.Rows.Count <> 1 Then
    Exit Sub
End If
If TypeName(Target.Value) <> "String()" Then
    Exit Sub
End If
If UCase(Target.Value) <> checkedMark Then
    Exit Sub
End If
If Target.Columns <> 7 Then
    Exit Sub
End If


currentRow = Target.Row

Range(Cells(currentRow, 1), Cells(currentRow, 7)).Copy

With Sheets(BD_SHEET)
    lastRow = .Range("A100000").End(xlUp).Row
    Cells(lastRow + 1, 1).PasteSpecial xlPasteValues
End With

With Cells(currentRow, 1).Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 5296274
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With
End Sub
于 2013-08-02T20:24:25.883 に答える