Excel VBA質問箱 IV

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

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


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

【79302】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/6(木) 16:38 -

引用なし
パスワード
   コード内容の説明がないですが、マクロを使うまでもなく条件付き書式
でいける案件のような気もします。
・ツリー全体表示

【79301】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/6(木) 16:35 -

引用なし
パスワード
   >For i = 1 To Cells(1, 1).End(xlDown)
ループの変数iは行方向のようですが、

>If Cells(2, i).Value = Cells(2, i + 1).Value Then

こちらは変数iは列番号として使われてますが、これはいいのですか?
・ツリー全体表示

【79300】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/6(木) 16:28 -

引用なし
パスワード
   質問は省略しないできちんと書きましょうね。

↓じゃないですか?

>Cells(3, i)(3, i + 1).Interior.ColorIndex = 3

Cells(Cells(3, i),Cells(3, i + 1)).Interior.ColorIndex = 3

もっとも、これもシートをきちんと指定した方がいいですね。

たとえば、アクティブシートの場合

ActiveSheet.Cells(ActiveSheet.Cells(3, i),ActiveSheet.Cells(3, i + 1)).Interior.ColorIndex = 3
・ツリー全体表示

【79299】オブジェクトエラーの理由
質問  oshiete  - 17/7/6(木) 15:54 -

引用なし
パスワード
   お願いします(m´・ω・`)m

Sub apple()

Dim i As Long

For i = 1 To Cells(1, 1).End(xlDown)

If Cells(2, i).Value = Cells(2, i + 1).Value Then
Cells(3, i)(3, i + 1).Interior.ColorIndex = 3


End If

Next i

End Sub
・ツリー全体表示

【79298】Re:xlsmファイルの破損について
お礼  エクセル素人  - 17/7/5(水) 21:42 -

引用なし
パスワード
   ▼γ さん:
ご回答ありがとうございます。

vbaは複雑になっているので、何が書いてあるかを説明するのは難しく、ファイルが壊れる基本的な原因みたいなのがあるのかなと思い、こちらに投稿させていただきました。

今後もバックアップを取りながら対応しようと思います。
ありがとうございました。
・ツリー全体表示

【79296】Re:隣のセルが空白でない場合に値を入力...
お礼  VBA勉強始めました  - 17/7/5(水) 16:13 -

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

シートによっては1だったり2だったりするのですが
教えて頂いたコードでやりたいことができました。

私も早くマナさんのようにVBAが使いこなせるようになりたいです。

今回の件では本当にたくさんお世話になりました。
ありがとうございました。

>▼VBA勉強始めました さん:
>
>>ws.Range("A1").CurrentRegion.Columns(1).Select.Value=1
>
>すべて1ですか? 
>こうです。
>
>範囲.Select
>Selection.Value = 1
>
>または、1行で
>
>範囲.Value = 1
>
>とします。
>
>Sub test2()
>  Dim ws As Worksheet
> 
>  Set ws = ActiveSheet
> 
>  ws.Columns(1).Insert
>  ws.Range("A1").CurrentRegion.Columns(1).Value = 1
>  
>End Sub
>
>
・ツリー全体表示

【79295】Re:マクロ、VBAのコード
発言  γ  - 17/7/4(火) 22:36 -

引用なし
パスワード
   コメントのありましたとおりかと思います。
単にコードを書いて、ということでなく、
あなたが、どこまでトライしたかを示した方が、良いと思います。

> ・C5,D5の数字をコピーしてsheet1のB4,B5セルに、行列の入れ替えと値で貼り付ける。
> ・sheet1のE48の数字をコピー(E48には関数が入っている)して、
>  sheet2のG5(コピーしたCD列と同じ行のG列)に値で貼り付ける。
> ここまでが一連の動作です。

ここまでをマクロ記録してみてはどうですか?
それを元にして、繰り返し処理に持ち込めば、
マクロにすることができるでしょう。

良い機会です。トライしてみて下さい。
中途までのマクロ記録をアップすれば、
コメントが得られると思います。
・ツリー全体表示

【79294】Re:マクロ、VBAのコード
発言  亀マスター  - 17/7/4(火) 18:52 -

引用なし
パスワード
   VBAは初めてでしょうか?
であれば、入門書や入門サイトで基本的なことから勉強するのをお勧めします。
ある程度進めば、おっしゃる処理はそれほど難しいものではありません。

単にコードの完成品を作って教えて欲しいということであれば、ここの利用規約に
反しますので、自分の力でどこまで作ったのかを提示し、その上でわからない部分に
ついて質問してください。
・ツリー全体表示

【79293】ああ、チェックマーク表示されないのか
発言  Jaka  - 17/7/4(火) 12:04 -

引用なし
パスワード
   >定数を選択して、文字以外の✓をはずしてOKボタン。

ああ、チェックマーク表示されないのか・・・。

✓ は、チェック と置き換えて読んでください。
・ツリー全体表示

【79292】Re:数字になっていないセルの内容を自動...
発言  Jaka  - 17/7/4(火) 11:57 -

引用なし
パスワード
   今更遅いだろうけど。

適当なセルに -1 を入力してコピーしておく。

ホーム → 検索と選択 → ジャンプ → セル選択 で、
定数を選択して、文字以外の✓をはずしてOKボタン。

Ctrl + F で、検索と置き換えダイアログを出す。
検索する文字列「-」で、置換後の文字空白で、すべて置換え。
検索と置き換えダイアログを閉じる。

-1を入力したセルがコピー状態であることを確認。
(余計なことをしなければコピー状態のはず。)

選択されているセルに、形式を選択して貼り付けで、
値と乗算を選択して貼り付け。

By 2007
・ツリー全体表示

【79291】マクロ、VBAのコード
質問  こまいぬ  - 17/7/4(火) 11:01 -

引用なし
パスワード
   Excelに関する質問です。
OSは7、ExcelのVerは2010です。
マクロかVBAに詳しい方、ご教示下さい。

sheet2のC列・D列の5行目から8181行目まで数字が入っています。

C5・D5の数字をコピーしてsheet1のB4・B5セルに、行列の入れ替えと値で貼り付ける。
sheet1のE48の数字をコピー(E48には関数が入っている)して、sheet2のG5(コピーしたCD列と同じ行のG列)に
値で貼り付ける。

ここまでが一連の動作です。

つぎはsheet2のC6・D6をコピーしてsheet1のB4・B5セルに、行列の入れ替えと値で貼り付ける。
sheet1のE48の数字をコピー(E48には関数が入っている)して、sheet2のG6(コピーしたCD列と同じ行のG列)に
値で貼り付ける。

この作業を8181行目まで繰り返したいです。
またsheet2のC・D列のデータは今後増えることがあります。

どの様なコードにすれば良いでしょうか。
回答よろしくお願い致します。
・ツリー全体表示

【79290】Re:Shell 変数使用
発言  Jaka  - 17/7/3(月) 16:29 -

引用なし
パスワード
   たぶん(動作未確認)

変数 = 2
'Shelcode = "rasdial.exe ""TEST" & 変数 & """" & " aaa bb"
Shelcode = "rasdial.exe ""TEST" & 変数 & """ aaa bb"

Ret1 = Shell(Shelcode, vbHide)
・ツリー全体表示

【79289】Shell 変数使用
質問  Ran  - 17/7/3(月) 15:29 -

引用なし
パスワード
   Ret1 = Shell("rasdial.exe ""TEST1"" aaa bbb", vbHide)
TESTの後の数字を変数にしたい。
Ret1 = Shell("rasdial.exe """TEST" & i"" aaa bbb", vbHide)
ではうまくいきません。
よろしくお願いします。
・ツリー全体表示

【79288】Re:xlsmファイルの破損について
発言  γ  - 17/7/2(日) 22:22 -

引用なし
パスワード
   それだけの記述では壊れる理由もわからないだろうし、
どうしたら壊れないかと問われても誰も答えられないと思います。

少なくともコードがないとどうにもならないでしょう。
ただし、コードがあっても必ず解決出来るとも言えません。
(ファイルが壊れるというのは個別の事象であって、
 内部処理に起因することもあり、Excel開発者でないとわからないことも
 ありえるでしょう。)
・ツリー全体表示

【79287】xlsmファイルの破損について
質問  エクセル素人  - 17/7/2(日) 21:12 -

引用なし
パスワード
   vbaで複数のデータを分析しています。

分析するデータごとに、xlsmファイルを分けて作って、
各xlsmファイル内のvbaを実行する、メインのxlsmファイルを作っています。
以下、イメージです。

<ファイル構成>
メイン.xlsm ←メイン.xlsmで分析1.xlsm〜分析3.xlsmを実行
分析1.xlsm
分析2.xlsm
分析3.xlsm

<補足>
補足1.:分析1〜3の各ファイルには、複数のモジュールがある(callなどしています)
補足2.:分析1〜3それぞれの実行結果をそれぞれ別のxlsxファイルに記録している
補足3.:分析1〜3の各ファイルには、vbaのみ記載し、エクセルのデータ記録はしていない

毎日、メイン.xlsmを実行して、日々のデータを記録しているのですが、
ある日突然、エラーでいずれかのxlsmファイルが壊れることがあります(記録用のxlsxファイルは壊れません)。

xlsmファイルで複数のモジュールを実行していることが原因なのかなとも思い、
例えば、エクスポートしたbasファイルを直接実行するといったことは可能なものでしょうか?

もしくは、その他、ファイルが壊れないようにする方法などありましたら、ご教授いただけると幸いです。
・ツリー全体表示

【79286】Re:隣のセルが空白でない場合に値を入力...
発言  マナ  - 17/7/1(土) 9:28 -

引用なし
パスワード
   ▼VBA勉強始めました さん:

>ws.Range("A1").CurrentRegion.Columns(1).Select.Value=1

すべて1ですか? 
こうです。

範囲.Select
Selection.Value = 1

または、1行で

範囲.Value = 1

とします。

Sub test2()
  Dim ws As Worksheet
 
  Set ws = ActiveSheet
 
  ws.Columns(1).Insert
  ws.Range("A1").CurrentRegion.Columns(1).Value = 1
  
End Sub

  
・ツリー全体表示

【79285】Re:隣のセルが空白でない場合に値を入力...
発言  VBA勉強始めました  - 17/7/1(土) 0:33 -

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

いつも親切に教えて頂き、ありがとうございます。
選択したらそのセル範囲に数値の「1」を入力させたいんです。

実は前回教えて頂いたVBAの最後の
ws.Range("A1").CurrentRegion.Columns(1).Select
で数値を入力したいセルの範囲を選んでくれたので

ws.Range("A1").CurrentRegion.Columns(1).Select.Value=1

このように少し手を加えたところ、エラーとなってしまいました。
(すでに帰宅しており、エラー内容などは月曜以降でないとわかりません)


>▼VBA勉強始めました さん:
>
>>数値を入力したいセル範囲を選択することができました!
>
>では、「数値を入力する」がどういう操作なのか教えてください。
>それとも、そこは出来ていますか?
・ツリー全体表示

【79284】Re:フォルダ内パスワード一括設定について
発言  マナ  - 17/6/30(金) 23:05 -

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

>(1)下記コードのうち、Excel版は問題なく動作するのですが、Word版を実行したところ「実行時エラー'424":オブジェクトが必要です」と出てしまいます。修正方法をご教示いただけないでしょうか。(エラー箇所は★の部分)

ごめんなさい。
試しましたが、こちらでは、エラーになりませんのでお役に立てません。

-----

エラーと関係ないのですが、

>    '文末に改行を挿入し削除(何らかの変更がないと上書き保存できない)

これについては、無駄に編集しなくても

ActiveDocument.Saved = False

を追加すれば、保存できます。
試してみてください。

あとWith〜end withを使用して、
こんな感じにすると、コードもすっきりします。

With Documents.Open(FileName:=p & myfn, PasswordDocument:=pwopen)
  .Saved = False
  .Password = pwclose
  .Close True
End With
・ツリー全体表示

【79283】Re:フォルダ内パスワード一括設定について
発言  マナ  - 17/6/30(金) 22:26 -

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

>
>(2)今回のマクロでは当該フォルダのみを動作の対象としていますが、下層フォルダもまとめて一括で動作するように設定はできないものでしょうか。

ここを参考に考えてみてはどうでしょうか。
ht tp://www.moug.net/tech/exvba/0060088.html


(1)については、問題なさそうですが試してみてから。
・ツリー全体表示

【79282】Re:隣のセルが空白でない場合に値を入力...
発言  マナ  - 17/6/30(金) 22:22 -

引用なし
パスワード
   ▼VBA勉強始めました さん:

>数値を入力したいセル範囲を選択することができました!

では、「数値を入力する」がどういう操作なのか教えてください。
それとも、そこは出来ていますか?
・ツリー全体表示

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