ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者のためのExcel VBAコミュの【まずはここ】初心者による単発質問トピック

  • mixiチェック
  • このエントリーをはてなブックマークに追加
初心者による質問が単発すると、ページ数ばかり増えてしまいますから、初心者の方はここで質問しませんか?
そうすれば、ブラウザ上からの検索で質問の検索をしやすくなると思うのですが、いかがでしょうか?

質問のやりとり自体長くても10レスもあれば済むでしょうし、
解決したらそのスレ自体が死にスレになっちゃいますからね。

類似質問や解決法を見つけるという点でも、
一つのスレにまとまっていた方が見つけやすいでしょうし。

というわけで、すぐに解決しそうな質問はこちらでどうぞ。

コメント(88)

exelを使用していると、画面がちらつきます・・・

知人に頼まれ質問しております。
私はエクセルの知識はないのですが、PCの知識は普通くらいです。
知人はエクセルは仕事で(在宅なので、近くに頼れる人はおりません)使ったりしているのですが、PCの設定などは全くできない感じです。

エクセルを開くと画面がちらつきます。
色々調べてみたのですが、Application.ScreenUpdating=false やなにか、エクセル専門のようなわからない用語ばかりで行き詰っております・・・。

もしくは、なにか説明図がついているなどの、簡単なおススメサイトはありませんでしょうか?
どうぞよろしくお願いいたします。

補足 OSはVISTAで、バーションは2007です。
簡単な言葉を用いて頂けますとありがたいです。

表計算をしているだけです。
一つのファイルにたくさんシートを作っているそうです。
新しいファイルに引っ越しなどもしたのですが、まったく改善がみられませんでした。
初めまして。
今ゼミで疑似色のプログラミングを作っているのですが、どうやればいいかわからず頓挫しています。
どなたか知っていますか?
何で質問用のトピックがあるのに使ってくれないんでしょうね。
トピの乱立を避ける意味でも良いと思うし。
質問はこちらでよろしいのでしょうか?

「別ブックを開いて値をコピー、元々開いていたシートにペースト」をしたいのですが、「別ブック」がすでに開いている場合でもちゃんとコピー&ペーストできるようにならないでしょうか?

現在のコードは以下のとおりです。

--------------------------------------------------------
Sub Macro1()

St = "3月4週"
En = "4月3週"
Lm = "初期設定"
base = "2011年度"

Dim OpnFN As String

OpnFN = ThisWorkbook.Path & "\" & base & ".xls"

On Error Resume Next

Workbooks.Open Filename:=OpnFN, ReadOnly:=True

Sheets(St).Range("AL4:AL178").Copy
ThisWorkbook.Sheets(Lm).Range("N4").PasteSpecial Paste:=xlPasteValues

End Sub

-----------------------------------------------------------------------

これで、参照元ブックが開いていない場合はちゃんとコピーできるのですが、
そのブックがすでに開いている場合、「On Error Resume 」以後の処理が止まってしまいます。

良い修正方法があれば、ご教示ください。

よろしくお願いいたします。

52 あめふらしさん

このコミュニティに参加したばかりの8−2です。
レスが付かないようなので、おせっかいします。

たぶん、
すでにOpenされている場合はOpnFNがActivateされていません。
それが原因だと思います。

対策としては

File Openの次に

 Windows(OpenFN).Activate

を挿入すれば解決すると思います。
(確かめていないですけどね )

=============================

Workbooks.Open Filename:=OpnFN, ReadOnly:=True

Windows(OpenFN).Activate ’追加

Sheets(St).Range("AL4:AL178").Copy

 ThisWorkbook.Sheets(Lm).Activate ’追加 .念のため追加しました。入らなかったら消してください

ThisWorkbook.Sheets(Lm).Range("N4").PasteSpecial Paste:=xlPasteValues

============================

ただ、

ERRORを拾って処理するのは、あまりお奨めしません。
ファイルがすでに開いているかをチェックするルーチンを入れる方がいいと思いますが、

その方法はググればすぐに見つかると思います。調べてみてください
> 8−2 さん

アドバイスありがとうございました。
連休中にいろいろやってみます・・・。
はじめまして。
質問させていただきます。

Caseに関して
?同じものを”and ”で可能なのでしょうか?

変数に関して
?TR1069やNY222等、英数字が混在しているものでもValueで稼働するのでしょうか?

以上、よろしくお願いします。
尚、現在組んでいるものは、あるセルがこの値であればこのセルを塗りつぶしなさいと組んでいるつもりです。


Sub 測定項目()
Sheets("物性データ表").Select
Range("C8").Select
Dim X As Variant
X = Range("C8").Value
Select Case X
Case TR1069
With Range("C29:H32").Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With
Case TR120A
With Range("C29:H32").Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With
End case
OSSAN V35さん

なかなかコメントが付かないようですのでお節介までにコメントします。

>Caseに関して
>?同じものを”and ”で可能なのでしょうか?

ちょっと曖昧な表現なのでよく解りませんが、もしかして
変数Xの値が異なる(複数)場合でもセル"C29:H32"を同じ色に塗りつぶしたいということでしょうか?
だとすれば、「,」でつなげばできます

例えば、
CASE  "TR1069","TR1069A","TR1069B"
With Range("C29:H32").Interior
.Pattern = xlSolid
. PatternColorIndex = 16
End With


という感じですね。
(ただ、塗りつぶすだけなのにパターンのプロパティを使うのはちょっと疑問ですが?)

>変数に関して
>?TR1069やNY222等、英数字が混在しているものでもValueで稼働するのでしょうか?

これもちょっと解りにくいのですが、
変数Xがバリアントで宣言されているので、変数Xの値は「CELL(C8)の値=文字列"TR1069"あるいは"NY222"」として取り込めています。

これで参考になったでしょうか。
8-2様

アドバイスどうもありがとうございます。
やってみます。

再度質問申し訳ございません。

Sub 測定項目()

Sheets("物性データ表").Select

Sheets("受け入れ").Select
Range("C8:D8").Select
ActiveCell.FormulaR1C1 = "=受け入れ!R[-6]C[-1]"
Range("C9:D9").Select
ActiveCell.FormulaR1C1 = "=受け入れ!R[-7]C"
Range("C10").Select
ActiveCell.FormulaR1C1 = "=受け入れ!R[-8]C[1]"
Range("C11").Select
ActiveWindow.SmallScroll Down:=6

Sheets("物性データ表").Select
Range("C8").Select
Dim X As Variant
X = Range("C8").Value
Select Case X

Case X = "TR1069", "TR120A", "TR120B", "TR201A", "TR201AK", "TR222", "TR222K", "TR412FS2K", "TR9A25", "NY201A", "NY423R", "NY433R", "NY60D", "NY9A100", "NY9A200", "NY934BK3", "PP1105", "PP141ASH", "PP201ASH", "PP202-10k", "PP205-12", "PP2100K", "PP258", "PP312B", "PP312BK", "PP312BDA", "PP412FS2K", "PP412HK", "PP416R", "PP501B", "PP60FSH", "PP6028", "PP62FSH", "PP701FSTR", "PP701FMSTR", "PP72BK", "PP815K", "PP830スギA4", "PP9B", "PP9F", "PP9FK", "PP9F", "PP9Fスギ5R", "PP9FR", "PP9F2R", "AC311-20", "KA300B", "KA304", "NT205-2", "NT225C", "PESK100", "PN314FR", "PT455R", "TV2023FR", "TV9A", "NY1069SHE"

With Range("C29:H32").Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With

Case X = "PP26", "PP26FK", "KA304"
ActiveWindow.SmallScroll Down:=12
With Range("C29:H32").Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With
Range("C23:G23").Select
With Range("C23:G23").Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With
Range("C26:G26").Select
With Range("C26:G26").Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With

Case X = "TR420", "TR407", "TR408R", "TR580R", "TR581R", "TR585R", "TR590R", "TR685R", "PP9FM3KR"
Cells("A42").Text = "中間伸度"

Case X = "TA420FS01", "TA420FS01(KL)", "PPG930B11", "PPG930B1K", "PP934K", "PP936KR", "PP934K(Y)", "PP936K(Y)", " PPG501B", "TR803", "TR803K", "TRG941", "TRG941K", "TRG940B1K", "TRG940B2K"
Range("C25:G25").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = 16
End With

End Select

End Sub

上記で組んでみたのですが、思うように動きません。どなたかアドバイスよろしくお願いします。
どのステップでエラーが起きたかを記述してくれたら簡単なんですが、
ひと目で解る間違いは、

>Case X = .................
    ↑↑
 「X=」は不要です。スペースに置き換えてみみてください。

それでもエラーが出るようなら、どのステップで起きたかも記述してください。

蛇足ですが、
プログラムにはコメントを入れた方がいいですよ。
プログラムの流れが読みやすくなります。
回答も得やすくなりますよ。
8-2様。たびたびありがとうございます。

アドバイスをいただいて、要望通り稼働しました。

御礼申し上げます。

要因は
?ご指摘通り、CASEの後
?PatternColorIndexであったのをに変更.ColorIndex

Sub 測定項目()

Dim X As Variant
Sheets("物性データ表").Select
X = Range("C8").Value

Select Case X
Case "TR1069", "TR120A", "TR120B", "TR201A", "TR201AK", "TR222", "TR222K", "TR412FS2K", "TR9A25", "NY201A", "NY423R", "NY433R", "NY60D", "NY9A100", "NY9A200", "NY934BK3", "PP1105", "PP141ASH", "PP201ASH", "PP202-10k", "PP205-12", "PP2100K", "PP258", "PP312B", "PP312BK", "PP312BDA", "PP412FS2K", "PP412HK", "PP416R", "PP501B", "PP60FSH", "PP6028", "PP62FSH", "PP701FSTR", "PP701FMSTR", "PP72BK", "PP815K", "PP830スギA4", "PP9B", "PP9F", "PP9FK", "PP9F", "PP9Fスギ5R", "PP9FR", "PP9F2R", "AC311-20", "KA300B", "KA304", "NT205-2", "NT225C", "PESK100", "PN314FR", "PT455R", "TV2023FR", "TV9A", "NY1069SHE"
Range("C29:H32").Select
Call 塗りつぶし

Case "PP26", "PP26FK", "KA304"
Range("C29:H32").Select
Range("C23:G23").Select
Range("C26:G26").Select
Call 塗りつぶし

Case "TR420", "TR407", "TR408R", "TR580R", "TR581R", "TR585R", "TR590R", "TR685R", "PP9FM3KR"
Range("A42").Value = "中間伸度"

Case "TA420FS01", "TA420FS01(KL)", "PPG930B11", "PPG930B1K", "PP934K", "PP936KR", "PP934K(Y)", "PP936K(Y)", " PPG501B", "TR803", "TR803K", "TRG941", "TRG941K", "TRG940B1K", "TRG940B2K"
Range("C25:G25").Select
Call 塗りつぶし

Case Else
Range("C23:G37").Select
Call 塗りつぶし2


End Select
End Sub

Sub 塗りつぶし()
With Selection.Interior

.Pattern = xlSolid
.ColorIndex = 16
End With
End Sub

Sub 塗りつぶし2()
With Selection.Interior

.Pattern = xlSolid
.ColorIndex = 2
End With
End Sub
はじめまして。

今回初めてコードを書いた(と言うか、切り貼りしたような
ものですが・・・)、本当に初心者です・・・
専門用語の使い方が分かってないので、拙い表現に
なってしまいますが、お許しください。


上書き保存をしようとしたときに、変更があれば、
任意のファイル名に更新日を入れて、名前をつけて保存したいのですが、
(既存のブックは変更前のまま残るように)
Workbook_beforesaveイベントでは必ずExcelが落ちます・・・

何が問題なのでしょうか。
ご教示いただけると助かります・・・。

ちなみに、標準モジュールに置いて、Sub auto_close()だと
うまくいきますが、変更がないときでもファイルが生成されるのは
避けたいです。

あくまでも、「上書き保存をしようとしたときに
変更があったときのみ」、この処理が行われるようにするには
どうすればいいでしょうか。

よろしくお願いします。


----------------------------------------
Private Sub Workbook_Beforesave(Cancel As Boolean)


'シートの更新日を更新

Worksheets("sheet1").Range("d1").Value = Now

'ファイル名に更新日を入れて名前をつけて保存

Dim myFile As String

A = Date
B = Format(A, "yymmdd")

myFile = ThisWorkbook.Path & "\○○○" & B & ".xls"
ThisWorkbook.SaveAs Filename:=myFile


End Sub
>>63
auto_close でも以下を参照すれば・・・

http://homepage2.nifty.com/kasayan/vba/excel7.htm
マルさん

ありがとうございます!!
教えてくださったURLを参考に、最初に

If ActiveWorkbook.Saved = True Then
ActiveWorkbook.Close
End If

を入れたら、auto_closeでできました!

本当にありがとうございました。
勉強になりました。
はじめまして、vba初めて2ヶ月ぐらいです。
昔、cobolとかcとかやってました。
さっそくの質問ですが、vbaのQueryTables.Addでホームページを引っ張ることができました。それで、今度はハイパーリンクの値を取得したいと思っています。
とりあえず、セルの頭から見ていって、隣のセルにハイパーリンクの値を書き出そうと思ったのですが、
ハイパーリンクの張っていないセルもあるので、
そのときにエラーになってしまいます。オブジェクトと言って良いのか分からないのですが、ハイパーリンクが入っている入っていないを確認する方法はありますか?
vbaの用語もあまり理解できていない部分もあるみたいで、ネットの検索キーワードで探せなくなってきました。よろしくお願いします。
> 66 ままこさん

もう解決済みかもしれませんが…

Range().Hyperlinks.Countで判定しましょう。
Count 〉0ならHyperlinksあり、
それ以外ならなしということで。
VBA初心者です。
VBAを早く覚えるコツって、ありますか?

実践あるのみexclamation & question ですかね?

VBAの勉強にトライしようとコミュに入りましたが
私にはレベルが高かったみたい。。。
たまに足跡残すかもしれませんがよろしくお願いします。
初心者の初歩的な質問ですいません。
Office2003で作ったマクロをOffice2007で作動させると、マクロ設定をしてくださいとメッセージが出ますよね。4つの中でどの設定をしますか?どれもマクロの実行ができませんが、
どうしてですか?また2003と2007の使い分けを教えてください。

http://www.ilovex.co.jp/blog/system/projectandsystemdevelopment/excel2003excel2007.html
はじめまして、VBA初心者でかなり初歩的で申し訳ないのですが、教えてください。

やりたいことはBOOK1,sheet3,H列の17行目から下方に空白までを"/"でつなぎ(●●��/●●��/●●��)、BOOK2のE列の最終データの1つ下のセルに書き込みたいのですが。


Worksheets("Book1").Select

i = 17
Do
Worksheets("Book2").Cells(MaxrowEE, 5).Value = Cells(i, 8) & "/" & Cells(i, 8)

Loop Until Cells(i, 8) = ""

これじゃ駄目ですよね?
頼りは本だけで...Doの部分が全く分からず困っています。
奇特な方教えてください。
>>[75]
いっぺんに全部をやろうとせず、ステップを踏んでコレができたら、次にアレを追加して、それが出来てからこっちも追加してと、それぞれが出来てからやるのがいいですよ。
たとえば、まず10行分を"/"で繋ぐのができてから空白行までとか、別個でBook1のコレをBook2のあそこにとか。
fenwickさん、ありがとうございます。
そうですね、地道にやってみます。
いろいろ調べてのですが、納得のいく情報が得られませんので、ご教授お願いします。
Excel VBAのShell関数で「メモ帳」を起動する場合は、

Shell "C:\Windows\Notepad.exe", vbNormalFocus

と記述すると問題なく「メモ帳」が起動します。
しかし、

Shell("C:\Windows\Notepad.exe", vbNormalFocus)

と記述するとコンパイルエラーになります。この違いはなんなのでしょうか?単なる仕様でしょうか?もし仕様であるなら、その情報が書いてるURLを教えていただけると助かります。

またCall ステートメントを使用すると、

Call Shell("C:\Windows\Notepad.exe", vbNormalFocus)

で問題なく「メモ帳」が起動します。この場合は()でくくってもコンパイルエラーにななりません。

この場合のCallはどういう役割をしているのでしょうか?

教えていただけますと大変に助かります。

よろしくお願いいたします。
はじめまして

win8.1 Excel2013です。
Excelで26穴32行B5版のルーズリーフを作成したいのですが

さらにルーズリーフの一部に表を入れる予定です。

表は左右上下対象に
合計4か所入れて
20分ほど両面印刷するつもりです。

パソコンによっては多少のずれがあるのは
了解済み。

穴の部分は無視して罫線部分でも原寸と
ほぼ同様に印刷したいのですが・・・

以上ご指導お願いいたします。
>>[81]

ミドリーヌさん がやりたいことはおおよそ分かりました。
どこまでやり終えて、今引っかかっているところは何ですか。
具体的にアドバイスをほしいポイントはなんなんでしょうか。
>>[82]

返信ありがとうございます。

まず原本をスキャンしてスキャン画像をEXCELに張り付けすると
セルの高さが、シートのセルと異なります。

しかしスキャン貼り付け画像はそこだけ
領域が異なり
セルとスキャン画像の融合ができませんでした。

私はスキャン画像をもとにそっくりな様式サイズ作成しようと試みましたが
どうやっても失敗します。

根本的にやり方が違うのでしょうか。
>>[83] 、

>根本的にやり方が違うのでしょうか。

その通りです。そんな難しいことは普通はしません。
EXCELは所詮EXCELです。既存の用紙の細かい部分を含めて合わすのは得策でありません。
別物として考えた方が楽です。
EXCELの用紙サイズをB5に入るようにすればいいのではないのでしょうか。
EXCELのプリントアウトをそのズールリーフに貼り付けて何が問題ですか。
この件について私の意図が伝わらないことが分かりました。

御手数かけましたが
質問はこれで打ち切りにいたします。
前回質問した件は自己解決しました。
そこでもう一つお願いしたいのですが


SUMIFS関数の使用例について質問です。

以下の表は
春美と秋奈がある週に食べた果物の量です。

左が春美、 中央が統計表、右が秋奈



最初は春美「柿」の欄にSUMIFS関数を用いました。

=SUMIFS(C3:C9,B3:B9,E3)

その結果「柿5個」の集計ができました。

しかし「グレープフルーツ」の欄に対しては

「柿」の欄の関数SUMIFS(C3:C9,B3:B9,E3)をコピーして
「F4」に貼り付け
最後のセルをE4に書き換えようとしたが
上手くできませんでした。

再度SUMIF関数の欄を呼び出したが面倒です。

�´↓��い僚厳廚眦堙抓愎瑤鮑遒蠶召垢靴�方法がないのでしょうか?

連続オートフィルを利用する方法はありますか?

秋奈の欄は
春美の関数を利用して
オートフィル式に計算できないのでしょうか?

以上ご指導お願いたします。
>>[87]

ここは Excel VBA のコミュニティーですので、関数の質問等は不適切です。

以下のコミュで質問されるといいと思いますよ。

Excel(エクセル)活用Excel(エクセル)活用
http://mixi.jp/view_community.pl?id=2106

あと、質問の後自己解決した場合は解決方法を書くようにしたほうがいいと思います。

ログインすると、残り56件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者のためのExcel VBA 更新情報

初心者のためのExcel VBAのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。