プロが教えるわが家の防犯対策術!

またまた投稿しました。
下のように、InputBox関数を用い、マクロ内部のワークシートの名前を指定しようとマクロを書いているのですが、うまくいきません。。どなたか助けてください。よろしくお願いします。


'Work Sheet Selection
InputSheetName:

Dim myStr As String
On Error GoTo ErrHandles

myStr = InputBox(Prompt:="Please" & vbCrLf & "Input Sheet No. ! ", _
Default:=ActiveSheet.Name) 

'---(1)Cancel or Blank
If Len(myStr) = 0 Then
MsgBox "Cancel Macro Execution", vbInformation

'---(2)Other Value
ElseIf myStr <> ActiveSheet.Name Then
MsgBox "Sheet" & myStr & "Macro Start", vbInformation
myStr = Worksheets.Name ← コンパイルエラーが発生 !!

End If

Exit Sub

ErrHandle:
'---(3)Error
MsgBox Err.Description & String(2, vbCrLf) & _
"Input Sheet No. again!", vbCritical

'---Re Input sheet No.
Resume InputSheetName

'Data Extracting
Dim x As Long
For x = 0 To 250
Worksheets("FQ.dat").Select
Range(A5).Select '
Selection.Copy
Worksheets("mystr").Select '  ← ココのシートを選択したい!
Range(Cells(x + 31, 3), Cells(x + 31, 6)).Select
ActiveSheet.Paste
Next x

質問者からの補足コメント

  • うーん・・・

    VBAに関する質問が2回目ということで、また。。。という表現を使いました。
    言葉足らずですね。
    私がやりたい事は、 InputBoxに入力された数値を 元データ(今回の場合「FQ.dat」)にある数値から検索し 自動的に他のシートへコピペしようするマクロを考えています。VLOOKUP関数みたいな
    感じです。
    「Data Extracting 」以降の構文がどういうわけか抜けていますね。
    正しくは、
    Worksheets("FQ.dat").Select
    Range(Cells(29 * x + (6), 1), Cells(29 * x + (6), 4)).Select '
    です。
    InBoxを使用してシートを指定すること(シート名は元データ内にあるセルの値と同じ)でマクロが実行されると考えているのですが。。。。

    どのように処理したら良いかわかりますか。。。?

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/06/02 13:45
  • うーん・・・

    ①,② 現在、探したい数値は 、A列 6行から規則的に29行おき6937行まで存在します。
    A B C    D
    6  10.87  109.5  50.9  -3
    7  10.38   88.8  35.8 -7
      ..   ..   ..   .
    35  10.87  208.3 352.1  2
    36  10.38   156.8  5.8 -10
    このようなデータが29行おきに 元データに配置されています。
    これをA行は、「シート名」に使用し、B行からD行を各振り分けられたシートへ
    コピペしたいです。
    ③ 仰るとおり、シート名は数値です。
    よろしくお願いします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2017/06/02 16:06
  • うーん・・・

    選択されたシートへの貼り付け先の行は固定です。 
    貼り付けは1行のみでは、1シートに250行、増えると800行になります。
    よろしくお願いします。

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/06/02 16:54
  • つらい・・・

    貼り付け先がどの行というか、
    一つのシートに複数回データを下へ貼り付けて行き
    元データのCellの値がBLANKになった時点で、
    元データの次の行へ移り、別のシートへ貼り付ける
    という作業です。

    No.6の回答に寄せられた補足コメントです。 補足日時:2017/06/02 17:27

A 回答 (12件中1~10件)

No.11 のお礼について



「Cells(Rows.Count, 3).End(xlUp).Row」でC列(3列目)の一番最後の値が入っている行番号を得ることが出来ます。「+1」で、その次の行になります。
もちろん「3」を変える事で他の列の最後の行を調べることが出来ます。

外国住まいだったのですね。なぜメッセージが英語?の疑問が解けました。
    • good
    • 0
この回答へのお礼

よく理解できました。。
本当にありがとうございました!!
助かります!!!

お礼日時:2017/06/02 22:30

No.10 の訂正です。



スペルミスを犯してしまいました。

「If DeNxt < 31 Then DeNxt = 31」に直して下さい。

申し訳ございませんでした。
    • good
    • 0
この回答へのお礼

うわー!凄いですね!!
本当にありがとうございます。 
海外にいて誰も頼れる人がいないので、マクロも
見よう見まねでやっていました。 
ついでに教えてほしいのですが、
「End(xlUp).Row + 1」の「+1」とは何を示しているのですか?
教えて頂ければ幸甚です。

お礼日時:2017/06/02 22:15

No.9 お礼について



「DeNxt = Sheets(WsName).Cells(Rows.Count, 3).End(xlUp).Row + 1」と「For SoCom = 1 To 4」の間に「If DeNxt < 31 Then denex = 31」を追加してみてください。
    • good
    • 0

こんな事でしょうか?


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

Dim Ws As Worksheet
Dim WsName As String ' 対象ワークシート名
Dim WsOK As Boolean ' ワークシート有無フラグ
Dim SoRow As Long ' 元行番号
Dim SoCom As Long ' 元列番号
Dim DeNxt As Long ' 次コピー先行番号

Do
WsName = InputBox( _
Prompt:="Please" & vbCrLf & "Input Sheet No. ! ", _
Default:=ActiveSheet.Name)
For Each Ws In Worksheets
If Ws.Name = WsName Then WsOK = True
Next Ws
If WsOK = False Then
If MsgBox( _
Prompt:="Sheet not found" & vbCrLf & "Please try again!", _
Buttons:=vbOKCancel + vbDefaultButton1) = _
vbCancel Then Exit Sub
End If
' Cancel → ExitSub
' Other → Loop
Loop Until WsOK
With Sheets("FQ.dat")
For SoRow = 6 To .Cells(Rows.Count, 1).End(xlUp).Row
If Cells(SoRow, 1).Value = WsName Then
DeNxt = Sheets(WsName).Cells(Rows.Count, 3).End(xlUp).Row + 1
For SoCom = 1 To 4
Sheets(WsName).Cells(DeNxt, SoCom + 2).Value = .Cells(SoRow, SoCom).Value
Next
End If
Next
End With

End Sub
------------------------------------------------------------------------------
    • good
    • 1
この回答へのお礼

現場から戻ってきて今確認しました。 
凄いですね!! イメージどおりです。
ありがとうございます!!
VBA初心者なのでわからないのですが、これを31行目から表示することは出来ませんか?
1行目から30行目までの間にグラフを入れるので、31行目から設定したいです。
宜しければご教示頂きたくよろしくお願い申し上げます。

お礼日時:2017/06/02 21:26

元のコードが合っているか微妙ですが


1回目に一致したらC31~F31セルに貼り付け
2回目に一致したらC32~F32セルに貼り付け
以下続くのように最初の行は31行目で良いのですか?
    • good
    • 1

まず


myStr = Worksheets.Name ← コンパイルエラーが発生 !!
これってエラーの原因が判っていないという理解でいいでしょうか?

WorksheetsはWorksheetのコレクションでNameなんて
プロパティはありませんから当然コケますね。
コレクションはとても頻度の高い概念ですから
しっかり理解しましょうね。

sがついて複数形のようなイメージで私は理解しています。
実際には名前ないしは番号を()内に付けることで
そのコレクション中の個々にアクセスします。
あとで出てくる構文にはちゃんとカッコ内にシート名を
選んで選択しているのにどうしてここは端折ったんでしょうね?

なんだこれ、重症だなぁ。
Worksheets("mystr").Select '

Dim myStr As Stringって定義しておきながら
いきなりそれとは全く無関係の"mystr"って文字列
持ってきちゃいましたねぇ。
入力したのは捨てちゃうんだ・・・。

あとマクロ記録だからSelectってよく出てくるけど
あくまでもそれは手で操作しているから、Selectが必要な
ケースは10%以下とおもっていいと思いますよ。
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。
VBA初心者なので見よう見まねやっております。
やっぱり上級者はSelectを使わないのですね。
マクロの記録を使いながらやってます。

お礼日時:2017/06/02 21:25

貼り付け先はどの行ですか?


複数回有ったら下へ貼り付けていくと言う事でしょうか?
この回答への補足あり
    • good
    • 0

対象シートが無かった場合の処理は?


貼り付け先の行は固定でしょうか?
貼り付けは1行のみですか?
この回答への補足あり
    • good
    • 0

① 探したい数値を「FQ.dat」シートのA列から探して、その行から下に〇行をまとめて指定のシートに貼り付けると言う事ですか?ちなみに〇行はいくつですか?


② 貼り付け先はアクティブシートでよければ、シート名の確認は不要だと思うのですが…
③ 探したい数値も貼り付け先も同じ「myStr」で指定しているのでしょうか?もしかしたらシート名が数値なのでしょうか?
この回答への補足あり
    • good
    • 0

根本的に何をやりたいのかよく判りません。

元の質問に書かれているならば、その質問のURLを提示してください。
特に「'Data Extracting」以降は「FQ.dat」シートの「A5」セルを「mystr」で指定したシートの「C31」~「F281」セルに貼り付けているだけ(同じものを貼り付けるだけ)のような感じですが…良いのでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qエクセル マクロについて

エクセルでマクロを使い全通りの組み合わせを出したいです。

A1 1
A2 2
A3 3


B1 1
B2 2
B3 3


C1 1
C2 2
C3 3

(数字は文字列です)

このデータをもとにD列に組み合わせを出したいです。
ただし以下のように、【同じ文字列を含む組み合わせは除外】したいです。
順番が違う場合は1通りとカウントします。

D列=↓(この場合は6通り)
123
132
213
231
312
321

まずこういうことが出来るのかは知識が浅く分らないのですが、もしできるのであれば知恵をお貸しください。
よろしくお願いします。

Aベストアンサー

大変申し訳ございません。勘違いしていました。以下はいかがでしょうか?
--------------------------------------------------------------------------------------------------
Sub sample()
Dim DicD As New Dictionary
Dim RowA As Long, RowB As Long, RowC As Long, RowD As Long
Dim StrD As String
For RowA = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For RowB = 1 To Cells(Rows.Count, 2).End(xlUp).Row
For RowC = 1 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(RowA, 1).Value <> Cells(RowB, 2).Value Then
If Cells(RowA, 1).Value <> Cells(RowC, 3).Value Then
If Cells(RowB, 2).Value <> Cells(RowC, 3).Value Then
StrD = Cells(RowA, 1).Value & Cells(RowB, 2).Value & Cells(RowC, 3).Value
DicD(StrD) = StrD
End If
End If
End If
Next
Next
Next
For RowD = 1 To DicD.Count
Cells(RowD, 4).Value = DicD.Keys(RowD - 1)
Next
Set DicD = Nothing
End Sub
--------------------------------------------------------------------------------------------------
※ 事前に「ツール」→「参照設定」で「Microsoft Scripting Runtime」を参照設定して下さい。

大変申し訳ございません。勘違いしていました。以下はいかがでしょうか?
--------------------------------------------------------------------------------------------------
Sub sample()
Dim DicD As New Dictionary
Dim RowA As Long, RowB As Long, RowC As Long, RowD As Long
Dim StrD As String
For RowA = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For RowB = 1 To Cells(Rows.Count, 2).End(xlUp).Row
For RowC = 1 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(RowA, 1)....続きを読む

Qエクセルのページに /

以下のような事は可能でしょうか

ワークシート内に3ページを作成し集計をしています。
1ページ目の入力範囲は B15:B44,F15:F44
2ページ目の入力範囲は B61:B90,F61:F90
3ページ目の入力範囲は B106:B135,F106:F135

F44までにデータ入力が終われば D46に 1/1ページ と表示。
F44で終わらず2ページ目のF90までにの間にデータを入力したならば
D91に 2/2ページ と表示。
先程の D46は1/2ページと表示。
F90で終わらず3ページ目のF180までにの間にデータを入力したならば
D136に 3/3ページ と表示。
先程の D91は 2/3ページと表示し D46も 1/3ページと表示。

D46  D91  D136に入る式を教えて下さい。
よろしくお願いいたします。

Aベストアンサー

D46セルに
「=IF(COUNTA(B106:B135,F106:F135)>0,"1/3",IF(COUNTA(B61:B90,F61:F90)>0,"1/2","1/1"))」
D91セルに
「=IF(COUNTA(B106:B135,F106:F135)>0,"2/3",IF(COUNTA(B61:B90,F61:F90)>0,"2/2",""))」
D136セルに
「=IF(COUNTA(B106:B135,F106:F135)>0,"3/3","")」
ではダメでしょうか?

QエクセルでSUM関数をコピーする際にコピー元を一定範囲でずらす方法はありますか?

エクセル初心者ですので使用用語や、説明が不十分かもしれませんが
下記、アドバイスいただければと存じます。

現在2つのシートがあり、Weekly(シート1)とDaily(シート2)でデータを取っています.
Weeklyは縦列に項目、横列にweek1,week2....(1ヶ月分)となっています。
Dailyは縦列に項目、横列にDay1,Day2.....(1ヶ月分)となっています。
やりたいこととしてはDailyデータをSUM関数を使ってWeeklyデータへと集計したいです。
その際にすべてを設定するとかなりの工数になるため1つのSUM関数を設定(Week1⇒Day1:Day7)してから後はコピーで済ませたいですが、

例)セルA1 week1 =SUM(Day1:Day7)で設定しコピーでセルB2 にweek2 =SUM (Day8:Day17)の設定で貼り付ける。

つまりWeekly側でセルはひとつしか動かないがDailyでは7つずつ横にずれていくといったコピーの設定はできますでしょうか。

説明がわかりづらく非常に恐縮ですが、アドバイスいただければ幸いでございます。

エクセル初心者ですので使用用語や、説明が不十分かもしれませんが
下記、アドバイスいただければと存じます。

現在2つのシートがあり、Weekly(シート1)とDaily(シート2)でデータを取っています.
Weeklyは縦列に項目、横列にweek1,week2....(1ヶ月分)となっています。
Dailyは縦列に項目、横列にDay1,Day2.....(1ヶ月分)となっています。
やりたいこととしてはDailyデータをSUM関数を使ってWeeklyデータへと集計したいです。
その際にすべてを設定するとかなりの工数になるため1つのSUM関数を設定(W...続きを読む

Aベストアンサー

申し訳ない。ついテンションがおかしくなって
SUMとOFFSET入れ違えました。括弧も違った。

=SUM(OFFSET('2017 June '!H50:U50,0,COLUMN()*13-39))

Qエクセル関数

例 E18セルの数値がマイナスの時はD22セル
それ以外はD21セルに表記させるには?

例 E4に入力する数字がE+E8の合計になれば青表示
ならなければ赤表示になる

関数の入力方法を教えて下さい。よろしくお願いいたします

Aベストアンサー

D22
=IF(E18<0,E18,"")
D21
=IF(E18<0,"",E18)

後者はNo2さんのいう通り、意味不明、
色付けは関数では不可。
関数は値を得るもので色付けに値などないから。
条件付き書式ですね。

QCellsがコピーできません

自分なりに下記条件でコード書いてみましたが、
うまくコピーできませんTT
説明不足かもしれませんが、どこがイケないのか
どなたかご教授いただけないでしょうか
当月末までに何とかしたいのですが、、、

不具合がある各商品データを行10~150、outdataシートに集約
列CにBOX-Noを持っており、setdataシート列CのBox-Noと一致したら
outdataシートからsetdataシートにその行ごと(商品データ)コピー
outdataがなくなるまで繰り返し、但し一商品に不具合が複数もある

outdataシートは月末には10~150行で増減がある(box-noはランダムで並ぶ)

setdataシートには商品すべてが入力されているレイアウトになっている
列CのBox-Noで商品名を検索し貼り付け(商品の一定位置行は決まっていない)
各商品には不具合データ貼り付け行が直下に5~30行ほどある


Sub tenki()

Set ws = Worksheets("setdata")
Set wo = Worksheets("outdata")

For outcnt = 10 To 150
outbox = wo.Cells(outcnt, "C")

If outbox <> "" Then

For setcnt = 1 To 3000
setbox = ws.Cells(setcnt, "C")

If outbox = setbox Then
wo.Range(wo.Cells(outcnt, "C"), wo.Cells(outcnt, "Z")).Copy _
Destination:=ws.Cells(setcnt + 2, "D")
End If

Next setcnt

End If

Next outcnt

End Sub

自分なりに下記条件でコード書いてみましたが、
うまくコピーできませんTT
説明不足かもしれませんが、どこがイケないのか
どなたかご教授いただけないでしょうか
当月末までに何とかしたいのですが、、、

不具合がある各商品データを行10~150、outdataシートに集約
列CにBOX-Noを持っており、setdataシート列CのBox-Noと一致したら
outdataシートからsetdataシートにその行ごと(商品データ)コピー
outdataがなくなるまで繰り返し、但し一商品に不具合が複数もある

outdataシートは月末には10~15...続きを読む

Aベストアンサー

ANo1です。

未だに、なさりたいことがよくわかりません。
意図と違う動作をするコードを示されても、実際になさりたいことを理解することはできませんね。

>なぜこうなるのか、手詰まりしていますTT
>何が足りないのでしょうか
記入される行位置が、意図するところと違うのだろうと想像しますが、それを決めているのは
>ws.Cells(setcnt+2, "D").End(xlup).Ofset(1,0)
という1行の計算部分です。
対象がはっきり絞り込めているので、この部分でどのように計算されているかを手計算でシミュレートしてみるとか、あるいは、デバッガのウオッチ式を利用しながら追跡してみたりすば、比較的簡単に理解できるのではないでしょうか?


以下は、私が勝手な想像で「こんなことでは?」と考えたものなので、内容的には異なる可能性が高いですがご参考までに。

※ ご例示の図ではデータの転記のされ方が説明文やご提示のコードと違うので、ますますわからなくなりますが、ご提示のコードでは『C~Z列のデータをD列~へ』転記するように記されていますのでそれに習っています。
(そうすると、C列の「Box○」の文字も転記されるので、何か違いそうですが…)
※ 「setdataシート」の構成い¥について、以下の仮定をしています
 (仮定が成立しない場合は、私の意図通りにも動作しません)
 ・C列にはキーとなる「Box○○」(○は数字)以外の文字は記入されていない
 ・同上の記入のある行から(2行下か?)から転記を始めるようですが、
  その2行分のD列には必ず何らかの記入がある(空白となっていることはない)
 ・同様に転記したデータの行でも、D列が空のものは存在しない
  (D列の空行を探して、転記していますので)
※ Box○○間の行数が少なくて転記できなくなった場合や、検索キーとなるBox○○と一致するものが「setdataシート」に存在しない場合は、とりあえず転記せず、その行数をカウントするようにしています。
実際には、いろいろな対処法が考えられると思います。
例えば、見当たらない場合は追加の項目を作成するとか、行を追加して記入するとか・・・
よくわからないので、カウントしておいて最後にその数を表示するようにしてあります。

※ あくまでも勝手な想像に基づいた処理ですので、(私にはわからない)質問者様の本当になさりたいこととは異なる可能性が大です。

Sub testSample()

Dim shs As Worksheet, shd As Worksheet
Dim rw As Long, r As Long, rTmp As Long
Dim val, errCount As Integer

errCount = 0
Set shs = Worksheets("outdata")
Set shd = Worksheets("setdata")

For rw = 10 To shs.Cells(Rows.Count, 3).End(xlUp).Row
 val = shs.Cells(rw, 3).Value
 r = 0
 On Error Resume Next
  r = WorksheetFunction.Match(shs.Cells(rw, 3).Value, shd.Columns(3), 0)
  If Err.Number <> 0 And val <> Empty Then errCount = errCount + 1
 On Error GoTo 0
 
 If r > 0 Then
  rTmp = shd.Cells(r, 4).End(xlDown).Row + 1
  If rTmp < shd.Cells(r, 3).End(xlDown).Row Then
   shd.Cells(rTmp, 4).Resize(, 24).Value = shs.Cells(rw, 3).Resize(, 24).Value
  Else
   errCount = errCount + 1
  End If
 End If
Next rw

If errCount > 0 Then MsgBox "転記できないものが " & errCount & "件ありました"
End Sub

ANo1です。

未だに、なさりたいことがよくわかりません。
意図と違う動作をするコードを示されても、実際になさりたいことを理解することはできませんね。

>なぜこうなるのか、手詰まりしていますTT
>何が足りないのでしょうか
記入される行位置が、意図するところと違うのだろうと想像しますが、それを決めているのは
>ws.Cells(setcnt+2, "D").End(xlup).Ofset(1,0)
という1行の計算部分です。
対象がはっきり絞り込めているので、この部分でどのように計算されているかを手計算でシミュレートしてみるとか...続きを読む

Qエクセルのバージョン変換の方法

エクセル97-2003 book の状態の資料(.xls)が6万程度あるのですが、それを全部現在のExcel(.xlsx)に変換したいのですが、その方法がわかりません。1つづつならできるのですが、あまりにたくさんなので何か月もかかりそうです。マクロ等で、早くできる方法はないでしょうか?
尚、古いほうのデーターを、ホルダーに入れておきたいのですが、これもたくさんあるのでマクロにしたいのですが、このホルダーを作るマクロがわかりません。もしご存知の方があればお教え願います。

Aベストアンサー

2つに分けて作りました。元ファイルの有るフォルダーに置いてください。
------------------------------------------------------------------------------------------
Sub 一覧表作成()
Dim ファイル名 As String
Dim 行番号 As Long
Cells.ClearContents
ファイル名 = Dir(ThisWorkbook.Path & "\*.xls")
Do While ファイル名 <> ""
If ThisWorkbook.Name <> ファイル名 Then
If StrConv(Right(ファイル名, 4), vbLowerCase) = ".xls" Then
行番号 = 行番号 + 1
Cells(行番号, 1) = ファイル名
End If
End If
ファイル名 = Dir()
Loop
End Sub
------------------------------------------------------------------------------------------
上記でアクティブシートに一覧表を作ります。
不要なファイルが有ったら行削除してください。
------------------------------------------------------------------------------------------
Sub 変換保存()
Const コピー先パス名 As String = "C:\○○\"
Dim コピー元パス名 As String
Dim 最終行 As Long
Dim 行 As Long
Dim ファイル名 As String
コピー元パス名 = ThisWorkbook.Path & "\"
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
For 行 = 1 To 最終行
If StrConv(Right(Cells(行, 1).Value, 4), vbLowerCase) = ".xls" Then
ファイル名 = Left(Cells(行, 1).Value, Len(Cells(行, 1).Value) - 4)
Workbooks.Open Filename:=コピー元パス名 & ファイル名 & ".xls"
If Dir(コピー先パス名 & ファイル名 & ".xlsx") <> "" Then Kill (コピー先パス名 & ファイル名 & ".xlsx")
ActiveWorkbook.SaveAs Filename:=コピー先パス名 & ファイル名 & ".xlsx", FileFormat:=51
ActiveWindow.Close
End If
Next
Application.DisplayAlerts = True
End Sub
------------------------------------------------------------------------------------------
上記でファイルコピー&変換を行います。
事前にコピー先フォルダーを作成しておいてください。
「"C:\○○\"」はコピー先のフルパス名に直して下さい。最後の「\」を忘れずに!
マクロが有ったファイルは保存時に無条件で削除されます。
保存先に同じ名前が有った場合は無条件で上書きされます。

2つに分けて作りました。元ファイルの有るフォルダーに置いてください。
------------------------------------------------------------------------------------------
Sub 一覧表作成()
Dim ファイル名 As String
Dim 行番号 As Long
Cells.ClearContents
ファイル名 = Dir(ThisWorkbook.Path & "\*.xls")
Do While ファイル名 <> ""
If ThisWorkbook.Name <> ファイル名 Then
If StrConv(Right(ファイル名, 4), vbLowerCase) = ".xls" Then
行番号 = 行番号 + 1
Cells(行番号...続きを読む

QExcel VBA フォルダの名前を取得して変更する方法

こんにちは。
 
"原本"と言うフォルダの名前を、エクセルのA1にあるバージョン名に変更したいのですが、マクロでできますか?
 
詳しい方、どうか宜しくお願い致します。

Aベストアンサー

すみませんが、回答と質問がまったく噛み合っていないように思います。
フォルダーは、Directory のフォルダーのことではないでしょうか?
違っているなら無視されて構いません。

ThisWorkbookのパスは任意で書き換えてください。

Sub FolderReNameMacro1()
  Dim OldFolderName As String
  Dim NewFolderName As String
  
  OldFolderName = ThisWorkbook.Path & "\原本 - コピー"
  NewFolderName = ThisWorkbook.Path & "\" & Range("A1").Value
  Name OldFolderName As NewFolderName
End Sub

Qvba座標の続きです。

https://oshiete.goo.ne.jp/qa/9799279.html

Aベストアンサー

それから、前のスレッドの最後で放置した
管理表にもこのコードを貼って$C$16を
$N$2に変更すればそのまま使えるだろうという積りです。
問題あれば言ってください。

またエラーが取れたらブレークポイントは必要ありません。
エラーを見つけるまでは、解除しても見つかる理由に
ならないから。

QExcel2010で別シートから検索値に一致した項目の下にあるデータの取得

sheet1にA列からV列まで項目1番~10番までがあります。1番(A列)の項目の2行目以降には名前が同じく1番(B列)の2行目以降には、金額(他シートからSUMIF関数)が入っています。2番~10番も同じく2列が同じ番号を使って名前+金額で一つのデータという感じです。Sheet2は表になっていてA2に検索値(I番)を入れればSheet1の(1番)名前と金額がデータがある分表示されるという事が出来ないかと。分かりにくいかと思いますが宜しくお願いします。

Aベストアンサー

HLOOKUP関数が使えると思います。

Qエクセル マクロ?VBA?についてご教示願います

図の②④⑤を自動化するエクセルファイルを作りたいです。
②は、O9以降のセルを以下(セル番号が合わない件は無視してください)として条件付き書式で塗潰したところで④が難しいことに
気づきました。

 ・「=IF($G5="","",IF((AL$3>=$H5)*AND(AL$3<=$I5),IF($A5="",IF($B5="",IF($C5="",IF($D5="",IF($E5="",6,5),4),3),2),1),""))」
 ・条件付き書式で1のときにピンク、2のときに・・・

②④⑤の手段で何か良い案はないでしょうか?
よろしくお願い致します。

Aベストアンサー

条件付き書式、数式を使用 云々で

=AND($G6<=M$5,M$5<=$H6)
一色なら
M6:AQ8まで
これでいけるけど
行ごとに変えるなら上記式の
6を行に合わせて、7とか8とかでいいんじゃないでしょうか。

No6の式は部品1、部品2、部品3で塗り分ける式でした。


人気Q&Aランキング