Excel VBA質問箱 IV

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

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


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

【81114】Re:vbaでcountifの使い方とかけ算の仕方
発言  マナ  - 19/11/2(土) 23:45 -

引用なし
パスワード
   ▼あきんちょ さん:

こうですか

Sub test()
  Dim r As Range
  
  Set r = Range("B1").End(xlDown).Offset(2)
  r.FormulaR1C1 = "=countif(r2c:r[-2]c,""L*"")"
  r.Offset(, 1).FormulaR1C1 = "=rc[-1]*4000"
  
End Sub
・ツリー全体表示

【81113】Re:vbaでcountifの使い方とかけ算の仕方
質問  あきんちょ  - 19/11/2(土) 23:34 -

引用なし
パスワード
   マナさん、早速のアドバイスありがとうございます✨

レイアウトは、下記の通りです。
  A列    B列
IIM2587    LT
IUR2463    ST
IUX2543    LE
IIM1243    SE

上記の様に列は58列ほどあり、行は決まっていない為、かけ算を入力する際、
最終行を取得し、その2行下から計算式を入力したいと考えています。
説明が上手く無くて申し訳ないです。
アドバイス頂けると幸いです。

・ツリー全体表示

【81112】Re:vbaでcountifの使い方とかけ算の仕方
発言  マナ  - 19/11/2(土) 19:16 -

引用なし
パスワード
   ▼あきんちょ さん:

レイアウトがわかりません。
具体例を使って説明していただけるとよいです。
Sub test()
  Dim r As Range
  
  Set r = Cells(ActiveCell.Row, 2)
  r.FormulaR1C1 = "=countif(c12:c12,""L*"")"
  r.Offset(, 1).FormulaR1C1 = "=rc[-1]*4000"
  
End Sub
・ツリー全体表示

【81111】vbaでcountifの使い方とかけ算の仕方
質問  あきんちょ  - 19/11/2(土) 18:55 -

引用なし
パスワード
   vba初心者です。

vbaでcountifで出た個数を使ってかけ算をし、値を出したいです。
質問としては、まず、2000行ほどあるデータで、B列にLから始まるデータの数をカウントしたいです。その結果を入力するセルは、activecell.offset(0,1),activateとしたいです。
尚、activecell.offset(0,1),の右隣に4,000を入力し、更にその隣に、先程出したLから始まるデータの個数と4,000を掛けた値が入力される様にするには、どのようにしたら良いでしょうか?

vbaを初めたばかりであまり分からない為、初歩的な所もご説明頂けると大変嬉しいです。
・ツリー全体表示

【81110】Re:オートフィルで日付の逆順
お礼  ビギナー  - 19/11/2(土) 11:20 -

引用なし
パスワード
   返事ありがとうございます。早速試してみます。
・ツリー全体表示

【81109】Re:オートフィルで日付の逆順
発言  マナ  - 19/11/1(金) 22:12 -

引用なし
パスワード
   ▼ビギナー さん:

連続データの作成を「マクロの記録」してみました。

  Range("A1").Select
  ActiveCell.FormulaR1C1 = "11/1/2019"
  Range("A1:A10").Select
  Selection.DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:= _
    xlDay, Step:=-1, Trend:=False
・ツリー全体表示

【81108】オートフィルで日付の逆順
質問  ビギナー  - 19/11/1(金) 21:36 -

引用なし
パスワード
   こんばんは。質問の内容ですが
a1に2019/11/1と入力し、a2〜a10のセルに、
2019/10/31、2019/10/30、2019/10/29・・・
となるようにしたいのですが、どうすればいいでしょうか?
色々調べてみたのですが、逆順のやり方を見つけることはできませんでした。
vbaでは不可能でしょうか?
・ツリー全体表示

【81107】Re:行の非表示
発言  マナ  - 19/11/1(金) 7:43 -

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

オートフィルタで可能です。
・ツリー全体表示

【81106】行の非表示
質問  yuji  - 19/11/1(金) 6:56 -

引用なし
パスワード
   VBAまったくの初心者です。
これから少しずつ勉強していこうと思います。

早速ですが、
データの中に「発送待ち」という列があり、全データ中発送待ちだけを表示したり全データを表示したりということをしたいと思ってます。

例えば、
   A   B
1 あああ 発送待ち    
2 いいい     
3 ううう 発送待ち
4 えええ 発送待ち
5 おおお

このようなデータがあった場合、何かをすると
   A   B
1 あああ 発送待ち    
3 ううう 発送待ち
4 えええ 発送待ち

と表示させ、また何かをすると全行表示に戻すというようなことをしたいのです。
これを同じシートで表示、非表示としたいのです(別シートに発送待ちだけを抽出なら関数を駆使して作れます)。

この「何か」という方法すらわからないのですが、そもそもVBAでならこんなことできますか?
もしできるなら、その方法をご教示ください。

よろしくお願いします。
・ツリー全体表示

【81105】Re:起動済みIEを操作
回答  とおりすがり  - 19/10/30(水) 5:22 -

引用なし
パスワード
   もう見てないかもしれないですが。

原因は「If DocumentTitle = "" Then」のところで、DocumentTitleを空白にしているために、
IEを判別できていないのだと思います。

取得しているシェルのうち、IEではないものは基本的にdocument.titleを持っていない=DocumentTitleが空白になります。
その結果、IEでないものが「If DocumentTitle = "" Then」の条件に一致してしまっている状態です。
(説明下手ですね。ごめんなさい。)

操作したいページのTitleタグの部分を指定すればいいんだと思いますが、
もしかしたらそのページはTitleタグの部分が空白になっているということですかね。

だとしたら、別のアプローチですが、下記ではどうでしょうか。
(もしたくさんタブを開いている状態だとしたら、タブを判別するためにもう一工夫必要かもしれません)

Sub test()

  Dim ie As InternetExplorer
  Dim sh As Object
  Dim win As Object
  Dim DocumentTitle As String

Set sh = CreateObject("Shell.Application")

  For Each win In sh.Windows
    If TypeName(win.document) = "HTMLDocument" Then
      Set ie = win
      Exit For
    End If
  Next
  
  ie.document.getElementsByTagName("TITLE")(0).innerText = ""

End Sub
・ツリー全体表示

【81104】Re:形式を選択して貼り付ける
お礼  たかぴー  - 19/10/26(土) 23:48 -

引用なし
パスワード
   マナさんご教授ありがとうございます

他のサイトで解決しました。

報告が遅くなり、大変失礼しました。

今後ともよろしくお願いします。
・ツリー全体表示

【81103】Re:形式を選択して貼り付ける
発言  マナ  - 19/10/26(土) 11:06 -

引用なし
パスワード
   ▼たかぴー さん:

ht tp://www.vbalab.sakura.ne.jp/bbspolicy.html

マルチポストについて
別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、というのはモラルに反します。「解決したからいいや」というのではありません。

また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。
・ツリー全体表示

【81102】形式を選択して貼り付ける
発言  たかぴー  - 19/10/26(土) 10:09 -

引用なし
パスワード
   下記のマクロでシート(内貨)の最終行に値の書式を選択して貼り付けをしたいのですが、どのようにすればよいでしょうか?


Sub MACRO5255()
Dim 最終行 As Long
Dim I As Long
For I = 1 To 50
最終行= Sheets("内貨").Range("A1").CurrentRegion.Rows.Count
If Range("B" & I + 2).Value <> "" Then
Range("B" & I + 2).Resize(1, 6).Copy Sheets("内貨").Range("D" & 最終行 + 1)
End If
If Range("A" & I + 2).Value <> "" Then
Range("A" & I + 2).Copy Sheets("内貨").Range("B" 最終行 + 1)

End If
End Sub
・ツリー全体表示

【81101】Re:適用範囲
発言  γ  - 19/10/19(土) 22:23 -

引用なし
パスワード
   出来上がったようで何よりです。

インデントをしっかりつけることをお薦めします。

Sub fmcdtn()
  Dim fc As FormatCondition
  Dim gyou As Long
  Dim retu As Long
  Dim rng As Range

  For i = 1 To Sheets.Count
    Sheets(Sheets(i).Name).Activate
    gyou = Cells(Rows.Count, 3).End(xlUp).Row
    retu = Cells(1, Columns.Count).End(xlToLeft).Column
    ActiveSheet.Cells.FormatConditions.Delete
    Range("A1").Activate
    Set rng = Range(Sheets(i).Cells(1, 1), Sheets(i).Cells(gyou, retu))
    Set fc = rng.FormatConditions. _
         Add(xlExpression, , "=COUNTIF(祝日データ,A$1)=1")
    fc.Interior.Color = RGB(204, 255, 255)
    gyou = 0
    retu = 0
  Next
End Sub

少し手を入れるとすると、こんな感じでしょうか。
できるだけ、シートやセルをSelectしないほうがよいかと思います。

Sub fmcdtn2()
  Dim fc As FormatCondition
  Dim gyou As Long
  Dim retu As Long
  Dim rng As Range

  For i = 1 To Worksheets.Count
    With Worksheets(i)
      gyou = .Cells(.Rows.Count, 3).End(xlUp).Row
      retu = .Cells(1, .Columns.Count).End(xlToLeft).Column
      .Cells.FormatConditions.Delete
      
      Set rng = .Range(.Cells(1, 1), .Cells(gyou, retu))
      Set fc = rng.FormatConditions. _
           Add(xlExpression, , "=COUNTIF(祝日データ,A$1)=1")
      fc.Interior.Color = RGB(204, 255, 255)
    End With
  Next
End Sub
・ツリー全体表示

【81100】Re:適用範囲
お礼  T-K  - 19/10/19(土) 19:37 -

引用なし
パスワード
   教えていただいた通り作り直したら希望通り
の処理ができました本当にありがとうございました。
一応できたものを下に記入します


Sub fmcdtn()


Dim fc As FormatCondition
Dim gyou As Long
Dim retu As Long
Dim rng As Range


For i = 1 To Sheets.Count

Sheets(Sheets(i).Name).Activate


gyou = Cells(Rows.Count, 3).End(xlUp).Row
retu = Cells(1, Columns.Count).End(xlToLeft).Column


    ActiveSheet.Cells.FormatConditions.Delete
   
   
    Range("A1").Activate


Set rng = Range(Sheets(i).Cells(1, 1), Sheets(i).Cells(gyou, retu))

   Set fc = rng.FormatConditions. _
   Add(xlExpression, , "=COUNTIF(祝日データ,A$1)=1")
 fc.Interior.Color = RGB(204, 255, 255) 
 
gyou = 0
retu = 0


  Next


End Sub
・ツリー全体表示

【81099】Re:適用範囲
発言  γ  - 19/10/18(金) 17:18 -

引用なし
パスワード
   だいぶ前進しましたね。
気になるのは、特定した行番号、列番号が、
すべてのシートで同じという前提になってしまっている点でしょうか。
行、列を求めるコードを、繰り返しの中でシート毎に実行したらどうでしょう。
・ツリー全体表示

【81098】Re:適用範囲
質問  T-K  - 19/10/18(金) 1:02 -

引用なし
パスワード
   A列には商品 B列C列には商品を作るための工程 E列2行目以降には、日付が記入されていますD3以降は受注情報在庫情報になります加工情報になります
途中空白があるためcuurent.RegionはダメでしたUsedRangeがいいのかEndで
処理したほうがいいのか、試行錯誤してますが、うまくいきません
現状の状態を下記に記しましたのでどこを訂正したほうがいいのか
おしえてください
*C列の最終行は空白でないため行数処理で使用しています
2行目は日付が入力されているため列数処理に使用しました
Sub fmcdtn()

Dim sh As Worksheet
Dim fc As FormatCondition
Dim gyou As Integer
Dim retu As Integer


gyou = Cells(Rows.Count, 3).End(xlUp).Row
retu = Cells(2, Columns.Count).End(xlToLeft).Column


 For Each sh In Sheets

  sh.Cells.FormatConditions.Delete


   Set fc = sh.Range(sh.Cells(1, 1), sh.Cells(gyou, retu)).FormatConditions. _
   Add(xlExpression, , "=COUNTIF(祝日データ,A$2)=1")
 fc.Interior.Color = RGB(204, 255, 255)
 
 
Next

End Sub
・ツリー全体表示

【81097】起動済みIEを操作
質問  けんじ  - 19/10/17(木) 18:14 -

引用なし
パスワード
   IEで起動済みの画面にエクセルの特定のセルの値を反省させたいです。
下記、ネットから参考にしたのですが
最後のie.document〜のところで
オブジェクト変数またはwithブロック変数が設定されていません。と出ました。
原因分かりますでしょうか?

Sub test()
  Dim ie As InternetExplorer
  Dim sh As Object
  Dim win As Object
  Dim DocumentTitle As String
  
  Set sh = CreateObject("Shell.Application")
  
  For Each win In sh.Windows
    DocumentTitle = ""
    On Error Resume Next
    DocumentTitle = win.document.title
    On Error GoTo 0
    If DocumentTitle = "" Then
      Set ie = win
      Exit For
    End If
  Next
  
  ie.document.getElementsByTagName("TITLE")(0).innerText = ""

End Sub
・ツリー全体表示

【81096】Re:適用範囲
発言  γ  - 19/10/17(木) 9:31 -

引用なし
パスワード
   適用範囲の特徴は無いのですか?
・特定の文字列が左上に書いてある場所から始まるとか
・CurrentRegionとOffset、InterSect等で割り出すことができるとか
そうしたことを検討してみてください。
そうした特徴を示してもらえばなんとかなるかも。

自分で見当がつかないことを、そのファイルを見たこともない、
何も情報を持っていない人に相談されても、
こうすべきだなどと即答できるわけがないですよ。
・ツリー全体表示

【81095】適用範囲
質問  T-K  - 19/10/17(木) 1:13 -

引用なし
パスワード
   windows10
EXCEL 2016

休日を条件付き書式で色付けしたいのですが、
シート数も多く、表の大きさも違うため、シートごとの設定が大変です。
VBAを作成しましたが、適用範囲設定で分からず
こまっています。
どなたかわかる方いらしたらおしえてください。


Sub fmcdtn()

Dim sh As Worksheet
Dim fc As FormatCondition


For Each sh In Sheets
  sh.Cells.FormatConditions.Delete


   Set fc = sh.Cells.FormatConditions. _
   Add(xlExpression, , "=COUNTIF(祝日データ,A$2)=1")
 fc.Interior.Color = RGB(204, 255, 255)
 
 Next
 

End Sub
・ツリー全体表示

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