Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


152 / 3841 ページ ←次へ | 前へ→

【79439】Re:シート上で、複数合計をだす
質問  ノンボ E-MAIL  - 17/10/20(金) 8:02 -

引用なし
パスワード
   ▼γ さん:
>データの例を示したほうが早く回答が得られると思います。
>行番号、列番号を明記したレイアウトを示してください。
>
>> A店舗だけが品目集計してあります。
>意味がわかりません。説明をしてください。
>
>また、コードは手打ちではなく、VBEからコピーペイストしてください。
rさんさっそくご返事いただきましてありがとうございます。
説明がうまく伝わらずもうしわけありません。
あらためて説明させていただきます。

ワークシト上に、複数店舗データーがあります。A列に店舗名、B列に品目名、C列に金額があります。C列の金額の合計をだすために下記コードを作成しました。

Sub test()
  Dim Rng As Range
  Dim a As Range
  On Error Resume Next
  With ActiveSheet.UsedRange
    Set Rng = .Columns(3).SpecialCells(xlCellTypeConstants)
  End With
  On Error GoTo 0
  If Rng Is Nothing Then Exit Sub
  For Each a In Rng.Areas
    With a
      .Cells(1).Offset(.Rows.Count).Value = WorksheetFunction.Sum(.Cells)
    End With
  Next
End Sub
これですと、シート上すべての店舗の合計がでます。編集したいのは、シート上の2店舗めからの合計をだしたいのです。下記部分を編集するのだと思いますが、
With ActiveSheet.UsedRange
    Set Rng = .Columns(3).SpecialCells(xlCellTypeConstants)
  End With
2店舗めからの行は定まっていません。ご教授よろしくお願いします。
・ツリー全体表示

【79438】Re:2枚目のシートの特定のセルの値を違...
発言  初心者XXXXYYYY  - 17/10/19(木) 23:40 -

引用なし
パスワード
   ▼マナ さん:
>▼初心者XXXXYYYY さん:
>
>>ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count,1).End(xlUp).Row
>
>ここは、Sheet1でよいのですか?

すみません。
Sheet2です。

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(i, 1) & ".xlsx"
上の行で進まなくなってしまいます。
・ツリー全体表示

【79437】Re:選択した行の空欄の項目の抽出
発言  マナ  - 17/10/19(木) 22:47 -

引用なし
パスワード
   ▼tomitomi さん:

叩き台です。

Option Explicit

Sub test()
  Dim wsS As Worksheet
  Dim wsD As Worksheet
  Dim i As Long, j As Long, m As Long, n As Long
  Dim flg As Boolean
  
  Set wsS = Sheets("Sheet1")
  Set wsD = Worksheets.Add
  
  m = 1
  For i = 2 To wsS.Cells(Rows.Count, 1).End(xlUp).Row Step 3
    flg = False
    n = 1
    For j = 2 To wsS.Cells(1, 2).End(xlToRight).Column
      If wsS.Cells(i, j).Borders(xlDiagonalUp).LineStyle <> xlContinuous Then
        If wsS.Cells(i, j).Value = "" Then
          n = n + 1
          wsD.Cells(m, n).Value = j - 1
          flg = True
        End If
      End If
    Next
    
    If flg Then
      wsD.Cells(m, 1).Value = wsS.Cells(i, 1).Value
      m = m + 1
    End If
    
  Next
  
End Sub
・ツリー全体表示

【79436】Re:選択した行の空欄の項目の抽出
発言  γ  - 17/10/19(木) 22:31 -

引用なし
パスワード
   データの例を示したほうが早く回答が得られると思います。
行番号、列番号を明記したレイアウトを示してください。
・ツリー全体表示

【79435】Re:シート上で、複数合計をだす
発言  γ  - 17/10/19(木) 22:30 -

引用なし
パスワード
   データの例を示したほうが早く回答が得られると思います。
行番号、列番号を明記したレイアウトを示してください。

> A店舗だけが品目集計してあります。
意味がわかりません。説明をしてください。

また、コードは手打ちではなく、VBEからコピーペイストしてください。
・ツリー全体表示

【79434】Re:2枚目のシートの特定のセルの値を違...
発言  マナ  - 17/10/19(木) 21:56 -

引用なし
パスワード
   ▼初心者XXXXYYYY さん:

>ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count,1).End(xlUp).Row

ここは、Sheet1でよいのですか?
・ツリー全体表示

【79433】2枚目のシートの特定のセルの値を違うブ...
質問  初心者XXXXYYYY  - 17/10/19(木) 21:07 -

引用なし
パスワード
   2枚目のシートの一列目のセルの名前を、新しいブックにつけて保存する方法を試していますが上手く行きません。
どうしたら良いでしょうか?

Sub create()
For i = 2 To ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count,1).End(xlUp).Row
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(i, 1) & ".xlsx"
ActiveWorkbook.Close
Next
End Sub
・ツリー全体表示

【79432】シート上で、複数合計をだす
質問  ノンボ E-MAIL  - 17/10/19(木) 20:47 -

引用なし
パスワード
    よろしくお願いします。

 シートに複数の店舗データーがあり、上から(A店、B店・・・)、B列に品目、C列に金額があります。A店舗だけが品目集計してあります。B店、C店にはSUMで、金額合計をだしたいのですが、以前教えていただきました下記コードを書きました。
Sub Test()
   dim rng as range
   dim a as range
   on Error REsume Next
   With range("A30",Activecell.Specialcells(xlLastcell))
   End With
   On Error GOTo 0
   If rng is Nothing Then Exit Sub
   For Each a in Rng Areas
   With a
   .Cells(1).Offset(.Rows.count).value=WorksheetFunction.Sum(.Cells)
   End With
 End sub

 ここで、A店舗の最終行から3行目よりセル範囲を指定したいのですが、任意のせる
("A30")ではなく、変数で行うにはどのようにコードを編集したらよいか、ご教授ください。よろしくお願いします。
・ツリー全体表示

【79431】選択した行の空欄の項目の抽出
質問  tomitomi  - 17/10/19(木) 20:06 -

引用なし
パスワード
   初めて質問させていただきます。
また、VBAは初心者です。

丸投げになってしまうかもしれないのですが、
なにかアドバイスいただければ幸いです。。。

B列に商品名、3段目にチェック項目が書かれている表があります。
すんだ項目に済を入力しています。
一つの商品に3行使っていて、
済をいれるセルも結合してあったり、してなかったりです。
また、しなくていい項目のところには罫線で斜線が引かれています。
やりたいことは、
選択した商品が、どこがまだ済んでいないのかを別シートに抽出したいです。
下記りんごを選択した場合、りんご 1,3,5みたいな感じです。

    1    2    3    4    5
                    
りんご     済        済        
                
                    
みかん     済            
                    

表や、やりたいことがうまくご説明できなくて、申し訳ございません、

何卒、お力添えいただける方がいましたら、
よろしくお願いいたします。
・ツリー全体表示

【79430】Re:A列の数式のシェイプを一括作成するマ...
発言  マナ  - 17/10/19(木) 18:34 -

引用なし
パスワード
   ▼VBA初心者 さん:


>    rcode(i) = ActiveSheet.Cells(i, 1).Value

この1行を、修正したらどうなりますか。

rcode(i) = ActiveSheet.Cells(i, 1).Formula
・ツリー全体表示

【79429】(Access) CopyFromRecordsetの逆
質問  りった  - 17/10/19(木) 12:22 -

引用なし
パスワード
   CopyFromRecordsetで1行文丸ごと、Excelにエクスポートできるようですが、インポートする関数は有りますでしょうか?

Dim adoRs As ADODB.Recordset
ws.Range("A1").CopyFromRecordset adoRs
の、逆がほしいです。(1行丸ごとupdate)
・ツリー全体表示

【79428】A列の数式のシェイプを一括作成するマクロ
質問  VBA初心者  - 17/10/19(木) 11:11 -

引用なし
パスワード
   下記マクロは、A列の文字列のシェイプを一括作成するものですが、
この「文字列」を「数式」にしたいです。
即ち、A列の数式のシェイプを一括作成するマクロにしたいのです。
そうなった場合の、マクロの完成形をご教示いただけないでしょうか。
改行やシェイプの形等は、変えずにお願いします。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Sub A列の文字列のシェイプを一括作成()
   
  Dim shapeType As String
  Dim shapeW As Integer
  Dim shapeH As Integer
  Dim kaigyo As Integer
   
  '=== シェイプの形と大きさを決めて下さい ここから ===
  shapeType = msoTextOrientationHorizontal  'シェイプの形
  shapeW = 130        'シェイプの大きさ(横幅)
  shapeH = 25       'シェイプの大きさ(高さ)
  kaigyo = 1           '何個おきに改行させるか
  '=== シェイプの形と大きさを決めて下さい ここまで ===
   
  Dim maxRow As Integer
  maxRow = Range("A65536").End(xlUp).Row
   
  Dim myShape As shape
     
  Dim rcode() As String 'シェイプ内の文字列その1
  ReDim rcode(maxRow)
   
  Dim shapeRow As Integer 'シェイプを作る行
  Dim shapeCol As Integer 'シェイプを作る列
  shapeRow = 0
   
  For i = 1 To maxRow
    'A列の値を取得
    rcode(i) = ActiveSheet.Cells(i, 1).Value
   
    'シェイプを作る位置を決める。
    If i Mod kaigyo = 0 Then '何個おきに改行させるか
      shapeCol = 5
      shapeRow = shapeRow + shapeH
    End If
 
   
  'オートシェイプを作成する
  Set myShape = ActiveSheet.Shapes.AddShape(Type:=shapeType, _
    Left:=shapeCol, Top:=shapeRow, Width:=shapeW, Height:=shapeH)
   
  '文字列を入れる
  myShape.Select
  Selection.Characters.Text = rcode(i) 'A列のみ
   
  shapeCol = shapeCol + shapeW
   
  Next
 
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
・ツリー全体表示

【79427】Re:ユーザー定義関数の中でセルの値を参...
発言  γ  - 17/10/19(木) 8:11 -

引用なし
パスワード
   要望どおりのものがなくても、
返事くらいするのがマナーじゃないですか?
・ツリー全体表示

【79426】Re:Findステートメントからsumで合計金額...
お礼  ノンボ E-MAIL  - 17/10/18(水) 20:45 -

引用なし
パスワード
   ご返答いただきまして、ありがとうございます。参考にさせていただきます。
大変ありがとうございました。
・ツリー全体表示

【79425】Re:Findステートメントからsumで合計金額...
お礼  ノンボ E-MAIL  - 17/10/18(水) 20:22 -

引用なし
パスワード
   ▼まっつわん さん:
>この例題でEndプロパティでセル範囲を特定するのは難しいのではないでしょうか?
>ついでに検索を繰り返すのも煩雑でしょう。
>
>今回の場合はジャンプ機能でセル範囲を検索する方法が良いと思います。
>
>Sub test()
>  Dim Rng As Range
>  Dim a As Range
>  
>  On Error Resume Next
>  With ActiveSheet.UsedRange
>    Set Rng = .Columns(3).SpecialCells(xlCellTypeConstants)
>  End With
>  On Error GoTo 0
>  If Rng Is Nothing Then Exit Sub
>  
>  For Each a In Rng.Areas
>    With a
>      .Cells(1).Offset(.Rows.Count).Value = WorksheetFunction.Sum(.Cells)
>    End With
>  Next
>End Sub
>
>また、標準機能で小計行は挿入できますが、
>そちらを使わないのはなぜでしょうか?
ご返答いただきまして、ありがとうございます。編集しまして、作成してみます。
大変ありがとうございました。
・ツリー全体表示

【79424】Re:ユーザー定義関数の中でセルの値を参...
回答  まっつわん  - 17/10/18(水) 14:05 -

引用なし
パスワード
   すでに適切な回答がありますが、別案です。

セルに名前を付けておられるようですが、
数式にも名前を付けられます。
そちらを使ってみてはいかがでしょうか?

www.eurus.dti.ne.jp/~yoneyama/Excel/name.htm#siki_name
・ツリー全体表示

【79423】Re:Findステートメントからsumで合計金額...
回答  まっつわん  - 17/10/18(水) 13:55 -

引用なし
パスワード
   この例題でEndプロパティでセル範囲を特定するのは難しいのではないでしょうか?
ついでに検索を繰り返すのも煩雑でしょう。

今回の場合はジャンプ機能でセル範囲を検索する方法が良いと思います。

Sub test()
  Dim Rng As Range
  Dim a As Range
  
  On Error Resume Next
  With ActiveSheet.UsedRange
    Set Rng = .Columns(3).SpecialCells(xlCellTypeConstants)
  End With
  On Error GoTo 0
  If Rng Is Nothing Then Exit Sub
  
  For Each a In Rng.Areas
    With a
      .Cells(1).Offset(.Rows.Count).Value = WorksheetFunction.Sum(.Cells)
    End With
  Next
End Sub

また、標準機能で小計行は挿入できますが、
そちらを使わないのはなぜでしょうか?
・ツリー全体表示

【79422】Re:Findステートメントからsumで合計金額...
発言  マナ  - 17/10/17(火) 22:58 -

引用なし
パスワード
   ▼ノンボ さん:

>   with rng.cells(3,3)

このセルの一つ下が空白かどうかで場合分けしてはどうでしょうか。
・ツリー全体表示

【79421】Findステートメントからsumで合計金額を...
質問  ノンボ E-MAIL  - 17/10/17(火) 20:36 -

引用なし
パスワード
    はじめまして、VBA初心者です。
 worksheetに複数の店舗データーがあり、店舗(A列)ごとに品目(B列)と金額(C列)があります。店舗ごとに金額の合計をだすため下記コードをかきました。
 sub Test()
  dim rng as range
  set rng=cells.find(what:="A店",lookin:=xlValues, lookat:=xlWhole)
  if not rng is nothing then
   with rng.cells(3,3)
   .End(xlDown).offset(1,0)= _
   "=sum(" & range(.address, .End(xlDown)).address(False,False) & ")"
  End With
  End if
End sub
複数行データーがある場合は問題なく合計金額がでますが、データーが1行だけの場合、
エラーになります。xlUPなどいろいろためしてみましたが、うまくいきません。どのようにコードをなおしたらいいか、ご教授ください。よろしくお願いします。
・ツリー全体表示

【79420】Re:ユーザー定義関数の中でセルの値を参...
発言  γ  - 17/10/14(土) 7:51 -

引用なし
パスワード
   すでに適切な回答をいただいています。

以下、参考のためのメモです。
(1)
ht tps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q108658705

(2)
ht tps://msdn.microsoft.com/ja-jp/library/office/ff700515(v=office.14).aspx
> 揮発性関数
> 揮発性関数は、参照元が変更されていないように思われる場合でも、再計算のたびに必ず再計算されます。揮発性関数を多用すると、再計算のたびに計算速度が低下しますが、全計算には影響しません。Application.Volatile を関数のコード内で指定すると、ユーザー定義関数を揮発性関数にできます。
>
> Excel の組み込み関数の中でも、RAND()、NOW()、および TODAY() は、言うまでもなく、揮発性関数です。また、OFFSET()、CELL()、INDIRECT()、および INFO() も揮発性関数です。
>
> 以前は揮発性関数として記載されていたが、実は、揮発性関数でないものに、INDEX()、ROWS()、COLUMNS()、および AREAS() があります。
((注)↑は、Excel2010を前提とした記述です)

質問にある、手法2を使いたい理由は何ですか?
記述のための労力節約ですか? コピーペイストすればさほどではないのでは?
式の明瞭性を確保する観点からも本来の1の使い方を私は推奨します。

Application.Volatileは、ユーザー定義関数を揮発性関数にする仕組みですが、
どの程度のセルでこの関数を使うかによりますね。
もしTODAY,NOW,INDIRECT,OFFSETを多用する方であれば、すでに揮発性関数を経験済み。
気にならないのであれば、それを使うのもアリかもしれません。
・ツリー全体表示

152 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free