Excel VBA質問箱 IV

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

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


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

【80328】Re:csvファイルの読み込み大量データ
発言  よろずや  - 19/1/24(木) 21:34 -

引用なし
パスワード
   思いつくままに感想を書きます。

変数 vA が複数の用途に使用されている。
これは、後日見直した時にロジックを見通す妨げになる。
また vA を最後に開放した方がいいような気がする。

InputBox 関数で数値を文字列として取得しているが、
数字かどうかのチェックがなされていない。
Application.InputBox メソッドを使えば、
数値しか入力出来ない様な制限を掛けることができる。

Worksheets.Add でワークシートを追加してるが、
これではマクロブックにデータを書き込む形なので関心しない。
データは新しいブックに書き込んだ方が好ましいと思う。

そんなところかな。
結構よく出来てると思いますよ。
・ツリー全体表示

【80327】Re:1つのセルの内容を分解して別のセル...
発言  マナ  - 19/1/24(木) 21:12 -

引用なし
パスワード
   ▼煮っまった さん:

>>260.4k確認中
>
>ここだけ、ハイフンがないので
>区切り位置で分割できませんでした。


1ステップ増えますが

「確認中」を置換で、「-確認中」とすればよいだけでした。
・ツリー全体表示

【80326】Re:1つのセルの内容を分解して別のセル...
発言  マナ  - 19/1/24(木) 19:35 -

引用なし
パスワード
   ▼煮っまった さん:

手作業でも簡単

1)A列を選択
2)改行を"-"に置換
ht tps://hamachan.info/win7/Excel/cell_j.html
3)区切り位置で分割

と思いましたが、

>260.4k確認中

ここだけ、ハイフンがないので
区切り位置で分割できませんでした。
・ツリー全体表示

【80325】Re:VBA 行削除について
発言  ごごご  - 19/1/24(木) 18:47 -

引用なし
パスワード
   Autofilterをかけたたあと
L列に0の値があるときは
Cells(Rows.Count, "L").End(xlUp).Value
の値はOになっているはずなので条件分岐してください
・ツリー全体表示

【80324】Re:VBA 行削除について
回答  亀マスター  - 19/1/24(木) 18:40 -

引用なし
パスワード
   フィルターをかけたときに抽出された件数を数えて、
それがゼロだったらDeleteをしないということでいいのではないでしょうか。

参考
フィルタで抽出したデータの数をカウントする
ht tps://www.moug.net/tech/exvba/0150043.html
・ツリー全体表示

【80323】Re:教えてください
発言  マナ  - 19/1/24(木) 18:23 -

引用なし
パスワード
   ▼ミリヤ さん:
>フォルダが二つありその中の各ファイルを管理用ファイルにコピーするマクロを作成したいです。

>'
>  Windows("【管理用】2018年度勤務表_69田中太郎.xlsx").Activate
>  Sheets("12月").Select
>  Sheets("12月").Copy Before:=Workbooks("2018年度勤務表_69江田中太郎.xlsx").Sheets(11)

コピー元とコピー先が逆ではありませんか?



・ツリー全体表示

【80322】Re:勤務表の集計マクロ
発言  マナ  - 19/1/24(木) 18:18 -

引用なし
パスワード
   ▼しいたけとんぼ さん:

念のため確認しますが、同じことをしたのでしょうか?
いずれにしても参考になりそうです。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=80320;id=excel
・ツリー全体表示

【80321】VBA 行削除について
質問  文鳥 E-MAIL  - 19/1/24(木) 17:02 -

引用なし
パスワード
   L列に0の値があるときその行を削除し、0がない場合はそのままにしたいです。

Range("L2").AutoFilter Field:=12, Criteria1:="=0"
Range("L2", Cells(Rows.Count, 1).End(xlUp)).EntireRow.Delete

L列に0の値がある場合は問題なくその行のみ削除されますが、
ない場合、削除されてほしくない1行目が削除されてしまいます。

0の値がない場合削除しないようにするにはどうしたらよいのでしょうか。
・ツリー全体表示

【80320】教えてください
質問  ミリヤ  - 19/1/24(木) 14:51 -

引用なし
パスワード
   フォルダが二つありその中の各ファイルを管理用ファイルにコピーするマクロを作成したいです。
フォルダパスを指定しそのなかの対象ファイルをすべて開くマクロは完成しました。
ファイルには氏名がはいいっておりコピー元とコピー対象は名前で判断できるようにしたいのですがとりあえず一つマクロの記録で作成してみました。

マクロの記録が下記になります。

Sub Macro2()
'
' Macro2 Macro
'

'
  Windows("【管理用】2018年度勤務表_69田中太郎.xlsx").Activate
  Sheets("12月").Select
  Sheets("12月").Copy Before:=Workbooks("2018年度勤務表_69江田中太郎.xlsx").Sheets(11)
  ActiveWorkbook.Save
  ActiveWindow.Close
  ActiveWindow.Close
End Sub

これをマクロで同じ名前があればそれらどうしを自動処理するようにしたいのですが、どうすればよいのでしょうか??

マクロ初心者です。よろしくお願いします。
・ツリー全体表示

【80319】Re:1つのセルの内容を分解して別のセル...
お礼  煮っまった  - 19/1/24(木) 14:22 -

引用なし
パスワード
   連絡ありがとうございました。
セルの中の改行コードとsplit関数でちょとやってみます。
・ツリー全体表示

【80318】Re:勤務表の集計マクロ
発言  しいたけとんぼ  - 19/1/24(木) 14:12 -

引用なし
パスワード
   ▼マナ さん:
そうするとうまく動かなくてどう編集したらいいかわかりません><

Sub Macro1()
'
' Macro1 Macro
'

'
  Windows("2018年度勤務表_xx〇〇.xlsx").Activate
  Sheets("12月").Select
  Sheets("12月").Copy Before:=Workbooks("【管理用】2018年度勤務表_2018年度勤務表_xx〇〇.xlsx").Sheets(10)
  ActiveWorkbook.Save
  ActiveWindow.Close
  ActiveWindow.Close
End Sub
・ツリー全体表示

【80317】Re:1つのセルの内容を分解して別のセル...
回答  chaco  - 19/1/24(木) 13:56 -

引用なし
パスワード
   こんにちは。Resつきませんね。

携帯からなのであまり詳しく書けないのですが、
VBAのSplit関数をネストすればできなくはないと思います。
Split関数の詳細はヘルプを参照していただくとして、delimiterにあたる引数を
vbCr
で区切った後、その配列のひとつの要素をさらにSplitし、次は - ハイフン で分ける。

それらをセルの納めたいところに納めていく感じでどうでしょう?
ネストせずとも、一度vbCrで分けたものを別セルに書き出してからさらにSplitでもいいかもしれませんね。

vbの通常の改行コードはvbCrLfですが、セルのなかでの改行はvbCrだけなところがポイントかと思います。
・ツリー全体表示

【80316】Re:シートを範囲してPDF出力
お礼  FUKUDA  - 19/1/24(木) 13:31 -

引用なし
パスワード
   ▼マナ さん:
Activesheetsにしたところ正常に動作しました。
引用したサイトの情報を信じ切ってしまっていました・・・。
ご助言ありがとうございました。
・ツリー全体表示

【80315】csvファイルの読み込み大量データ
質問  煮っまった  - 19/1/24(木) 10:52 -

引用なし
パスワード
   大量のcsvファイルを読み込む処理で以下の処理を利用していますが

Application.GetOpenFilenameファイルを読み込む画面が出る前にエクセルが
固まある時があります。普通に動くときもります。

件数が多いことから発生するものなのか?
何かの記述が抜けているものなのか?
どなたか教えてもらえませんか?

csvファイルを読み込むのが早くで助かる処理なので活用したい


Public Sub Samp1()

  Dim vFile As Variant
  Dim ffn As Integer
  Dim sBuf As String
  Dim vA As Variant, iP(1) As Long
  Dim i As Long, j As Long, k As Long
  Const CROWSZ As Long = 50000 ' 1回の書き出し行数

  vFile = Application.GetOpenFilename("CSV Files(*.csv), *.csv")
  If (VarType(vFile) <> vbString) Then Exit Sub

  vA = InputBox("開始行,終了行", "取込み範囲指定", "10,1000010")
  If (Len(vA) = 0) Then Exit Sub
  vA = Split(vA, ",")
  If (UBound(vA) < 1) Then Exit Sub
  iP(0) = Int(Val(vA(0)))
  iP(1) = Int(Val(vA(1)))
  If (iP(0) > iP(1)) Then Exit Sub
  If (iP(1) - iP(0) + 1 > Rows.Count) Then Exit Sub
  ReDim vA(1 To CROWSZ, 1 To 1)

  Application.ScreenUpdating = False
  Worksheets.Add
  ffn = FreeFile()
  Open vFile For Input As #ffn
  i = 1
  While ((Not EOF(ffn)) And (i < iP(0)))
   Line Input #ffn, sBuf
   i = i + 1
  Wend
  k = 1
  j = 0
  While ((Not EOF(ffn)) And (i <= iP(1)))
   If (j >= CROWSZ) Then
     Cells(k, "A").Resize(CROWSZ).Value = vA
     k = k + CROWSZ
     j = 0
   End If
   j = j + 1
   Line Input #ffn, vA(j, 1)
   i = i + 1
  Wend
  If (j > 0) Then Cells(k, "A").Resize(j).Value = vA
  Close #ffn

  If ((j > 0) Or (k > 1)) Then
   With Columns("A")
     .TextToColumns .Cells(1), xlDelimited, Comma:=True
   End With
  Else
   Application.DisplayAlerts = False
   ActiveSheet.Delete
   Application.DisplayAlerts = True
  End If
  Application.ScreenUpdating = True
End Sub
・ツリー全体表示

【80314】1つのセルの内容を分解して別のセルに個...
質問  煮っまった  - 19/1/24(木) 10:41 -

引用なし
パスワード
   色々考えましたがお手上げなのでどなたか助けてもらえませんか?

1つの注文番号で納期回答を仕入先よりもらっていますが
どうしてもセルの中に複数の回答を入れてくるところがあります。

セルには、数量-納期が記載されており
数量と納期の間には-が入っています。


1.数量はk単位で記載されており、kは千個単位(少数以下の記載あり)
2.日付は 月/日です

このようなデータを分解して

セルA1は

B1 数量
C1 納期
D1 数量
E1 納期

セルA2は

B2 数量
C2 納期
D2 数量
E2 納期

などに更新できますか?

セルA1の中に以下
7.2k-2/14
4.8k-2/20

セルA2の中に以下

2.5k-2/14
3k-2/20
3k-3/20


まれにしたのようなデータもきます。

49.7k-3/5
170.1k-3/12
182k-3/19
260.4k確認中


セルの中には最大で6個ほど記載される場合があります。


すいませんがアドバイスお願いします。
・ツリー全体表示

【80313】Re:勤務表の集計マクロ
発言  マナ  - 19/1/23(水) 18:18 -

引用なし
パスワード
   ▼しいたけとんぼ さん:
>マクロ初心者です。ご教示ください。。

どうすればよいか、全くわからないのであれば、
「マクロの記録」を使ってみてはどうでしょうか。
・ツリー全体表示

【80312】勤務表の集計マクロ
質問  しいたけとんぼ  - 19/1/23(水) 13:56 -

引用なし
パスワード
   マクロ初心者です。ご教示ください。。
マクロ作成シートがあります。

やりたいこと↓
毎月確定した各人の勤務表を管理用勤務表へコピーする。
以下、設定条件から情報を取得し、実行。
実行後、は勤務表の該当月シートが管理用勤務表の同名シートにコピー
されている状態にしたいです。

設定条件
1.対象月(管理用勤務表にコピーしたい月を入力)
2.当月勤務表フォルダ(勤務表フォルダのパスを入力)
3.管理用勤務表フォルダ(管理用勤務表フォルダのパスを入力)

上記3つを自分で入力しボタンひとつで実行されるマクロを作成したいです。

・両勤務表のフォーマットは1〜12月ごとにシートわけされています。
・両ファイル名には個人指名が必ず入っているので個人指名で照合し動作を実行させたいです。
・ファイルがなくコピー実行がされなかったものもファイル名で出したいです。

宜しくお願い致します
・ツリー全体表示

【80311】Re:フォルダを作成し、さらにファイル名...
お礼  you  - 19/1/21(月) 21:54 -

引用なし
パスワード
   マナさん

あのメッセージとは
>「実行時エラー:1004 SaveAsメソッドは失敗しました。Workbookオブジェクト」
です。

ですが、今日試したところ、上手くいきました!
何か一部の文字を弄ったら上手くいきました。
色々手伝ってくださりありがとうございました!
・ツリー全体表示

【80310】Re:フォルダを作成し、さらにファイル名...
発言  マナ  - 19/1/21(月) 21:01 -

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

>いえ、手動で行ったところ、あのメッセージが出ました・・

あのメッセージとは?
・ツリー全体表示

【80309】Re:マクロ作成
発言  マナ  - 19/1/21(月) 20:59 -

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

>D列に上からP,P(),EX,E,Iとあり、”I”という文字が入っている行を見つけ、D列に計算式を入れたいのです。

>何かいい方法があれば教えてください。

どんな式ですか?
手作業で簡単にできそうですが、だめでしょうか。
・ツリー全体表示

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